// export def_base_level , def_amount_of_people , def_skill_level , def_starting_resources , def_shipments_density , def_shared_vision , def_people_respawning ; export is_depot , number_of_breastworks , number_of_people , skill_level , starting_crates , starting_resources , shipments_density , morale_decreasing_time , amount_of_apemen , amount_of_siberit , respawning_time_min , respawning_time_max , BetaAI , RussianAI , DifficultyC , def_beta_ai , def_russian_ai , def_difficulty ; export Side_Teams , Teams ; export Side_Positions , Side_Nations , Team_Game ; export Position_Sides ; export depot_def , breastworks_def , start_def , normal_oil_deposits_locations , extra_oil_deposits_locations , normal_sib_deposits_locations , extra_sib_deposits_locations , battle_flags_id ; var commander ; var global_units , global_defined , soldiers_created ; var neng , nsci , nmech , nsol ; function read_multiplayer_and_game_parameters ; var i ; begin
   0: LD_INT 0
   2: PPUSH
   3: PPUSH
// if Multiplayer then
   4: LD_OWVAR 4
   8: IFFALSE 62
// begin Your_Side := mp_player_side ;
  10: LD_ADDR_OWVAR 2
  14: PUSH
  15: LD_OWVAR 7
  19: ST_TO_ADDR
// Side_Positions := mp_sides_positions ;
  20: LD_ADDR_EXP 28
  24: PUSH
  25: LD_OWVAR 17
  29: ST_TO_ADDR
// Side_Teams := mp_sides_teams ;
  30: LD_ADDR_EXP 26
  34: PUSH
  35: LD_OWVAR 15
  39: ST_TO_ADDR
// Side_Nations := mp_sides_nations ;
  40: LD_ADDR_EXP 29
  44: PUSH
  45: LD_OWVAR 16
  49: ST_TO_ADDR
// Teams := mp_teams ;
  50: LD_ADDR_EXP 27
  54: PUSH
  55: LD_OWVAR 12
  59: ST_TO_ADDR
// end else
  60: GO 236
// begin Your_Side := 6 ;
  62: LD_ADDR_OWVAR 2
  66: PUSH
  67: LD_INT 6
  69: ST_TO_ADDR
// Side_Positions := [ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ] ;
  70: LD_ADDR_EXP 28
  74: PUSH
  75: LD_INT 0
  77: PUSH
  78: LD_INT 0
  80: PUSH
  81: LD_INT 0
  83: PUSH
  84: LD_INT 0
  86: PUSH
  87: LD_INT 0
  89: PUSH
  90: LD_INT 0
  92: PUSH
  93: LD_INT 0
  95: PUSH
  96: LD_INT 0
  98: PUSH
  99: EMPTY
 100: LIST
 101: LIST
 102: LIST
 103: LIST
 104: LIST
 105: LIST
 106: LIST
 107: LIST
 108: ST_TO_ADDR
// Side_Teams := [ 1 , 2 , 1 , 4 , 0 , 0 , 0 , 0 ] ;
 109: LD_ADDR_EXP 26
 113: PUSH
 114: LD_INT 1
 116: PUSH
 117: LD_INT 2
 119: PUSH
 120: LD_INT 1
 122: PUSH
 123: LD_INT 4
 125: PUSH
 126: LD_INT 0
 128: PUSH
 129: LD_INT 0
 131: PUSH
 132: LD_INT 0
 134: PUSH
 135: LD_INT 0
 137: PUSH
 138: EMPTY
 139: LIST
 140: LIST
 141: LIST
 142: LIST
 143: LIST
 144: LIST
 145: LIST
 146: LIST
 147: ST_TO_ADDR
// Side_Nations := [ 1 , 2 , 3 , 1 , 2 , 3 , 0 , 0 ] ;
 148: LD_ADDR_EXP 29
 152: PUSH
 153: LD_INT 1
 155: PUSH
 156: LD_INT 2
 158: PUSH
 159: LD_INT 3
 161: PUSH
 162: LD_INT 1
 164: PUSH
 165: LD_INT 2
 167: PUSH
 168: LD_INT 3
 170: PUSH
 171: LD_INT 0
 173: PUSH
 174: LD_INT 0
 176: PUSH
 177: EMPTY
 178: LIST
 179: LIST
 180: LIST
 181: LIST
 182: LIST
 183: LIST
 184: LIST
 185: LIST
 186: ST_TO_ADDR
// Teams := [ [ 1 ] , [ 2 ] , [ 3 ] , [ 4 ] , [ 5 ] , [ 6 ] ] ;
 187: LD_ADDR_EXP 27
 191: PUSH
 192: LD_INT 1
 194: PUSH
 195: EMPTY
 196: LIST
 197: PUSH
 198: LD_INT 2
 200: PUSH
 201: EMPTY
 202: LIST
 203: PUSH
 204: LD_INT 3
 206: PUSH
 207: EMPTY
 208: LIST
 209: PUSH
 210: LD_INT 4
 212: PUSH
 213: EMPTY
 214: LIST
 215: PUSH
 216: LD_INT 5
 218: PUSH
 219: EMPTY
 220: LIST
 221: PUSH
 222: LD_INT 6
 224: PUSH
 225: EMPTY
 226: LIST
 227: PUSH
 228: EMPTY
 229: LIST
 230: LIST
 231: LIST
 232: LIST
 233: LIST
 234: LIST
 235: ST_TO_ADDR
// end ; for i := 1 to 8 do
 236: LD_ADDR_VAR 0 2
 240: PUSH
 241: DOUBLE
 242: LD_INT 1
 244: DEC
 245: ST_TO_ADDR
 246: LD_INT 8
 248: PUSH
 249: FOR_TO
 250: IFFALSE 288
// if Multiplayer_GetPlayerIsSpec ( i ) then
 252: LD_VAR 0 2
 256: PPUSH
 257: CALL_OW 530
 261: IFFALSE 286
// Side_Positions := Replace ( Side_Positions , i , 0 ) ;
 263: LD_ADDR_EXP 28
 267: PUSH
 268: LD_EXP 28
 272: PPUSH
 273: LD_VAR 0 2
 277: PPUSH
 278: LD_INT 0
 280: PPUSH
 281: CALL_OW 1
 285: ST_TO_ADDR
 286: GO 249
 288: POP
 289: POP
// Position_Sides := [ 0 , 0 , 0 , 0 , 0 , 0 ] ;
 290: LD_ADDR_EXP 31
 294: PUSH
 295: LD_INT 0
 297: PUSH
 298: LD_INT 0
 300: PUSH
 301: LD_INT 0
 303: PUSH
 304: LD_INT 0
 306: PUSH
 307: LD_INT 0
 309: PUSH
 310: LD_INT 0
 312: PUSH
 313: EMPTY
 314: LIST
 315: LIST
 316: LIST
 317: LIST
 318: LIST
 319: LIST
 320: ST_TO_ADDR
// for i := 1 to 8 do
 321: LD_ADDR_VAR 0 2
 325: PUSH
 326: DOUBLE
 327: LD_INT 1
 329: DEC
 330: ST_TO_ADDR
 331: LD_INT 8
 333: PUSH
 334: FOR_TO
 335: IFFALSE 382
// if Side_Positions [ i ] then
 337: LD_EXP 28
 341: PUSH
 342: LD_VAR 0 2
 346: ARRAY
 347: IFFALSE 380
// Position_Sides := Replace ( Position_Sides , Side_Positions [ i ] , i ) ;
 349: LD_ADDR_EXP 31
 353: PUSH
 354: LD_EXP 31
 358: PPUSH
 359: LD_EXP 28
 363: PUSH
 364: LD_VAR 0 2
 368: ARRAY
 369: PPUSH
 370: LD_VAR 0 2
 374: PPUSH
 375: CALL_OW 1
 379: ST_TO_ADDR
 380: GO 334
 382: POP
 383: POP
// Team_Game := Side_Teams [ your_side ] ;
 384: LD_ADDR_EXP 30
 388: PUSH
 389: LD_EXP 26
 393: PUSH
 394: LD_OWVAR 2
 398: ARRAY
 399: ST_TO_ADDR
// if Multiplayer then
 400: LD_OWVAR 4
 404: IFFALSE 538
// begin def_base_level := GetMultiplayerSetting ( 0 ) ;
 406: LD_ADDR_EXP 1
 410: PUSH
 411: LD_INT 0
 413: PPUSH
 414: CALL_OW 426
 418: ST_TO_ADDR
// def_amount_of_people := GetMultiplayerSetting ( 1 ) ;
 419: LD_ADDR_EXP 2
 423: PUSH
 424: LD_INT 1
 426: PPUSH
 427: CALL_OW 426
 431: ST_TO_ADDR
// def_skill_level := GetMultiplayerSetting ( 2 ) ;
 432: LD_ADDR_EXP 3
 436: PUSH
 437: LD_INT 2
 439: PPUSH
 440: CALL_OW 426
 444: ST_TO_ADDR
// def_starting_resources := GetMultiplayerSetting ( 3 ) ;
 445: LD_ADDR_EXP 4
 449: PUSH
 450: LD_INT 3
 452: PPUSH
 453: CALL_OW 426
 457: ST_TO_ADDR
// def_shipments_density := GetMultiplayerSetting ( 4 ) ;
 458: LD_ADDR_EXP 5
 462: PUSH
 463: LD_INT 4
 465: PPUSH
 466: CALL_OW 426
 470: ST_TO_ADDR
// def_shared_vision := GetMultiplayerSetting ( 10 ) ;
 471: LD_ADDR_EXP 6
 475: PUSH
 476: LD_INT 10
 478: PPUSH
 479: CALL_OW 426
 483: ST_TO_ADDR
// def_people_respawning := GetMultiplayerSetting ( 13 ) ;
 484: LD_ADDR_EXP 7
 488: PUSH
 489: LD_INT 13
 491: PPUSH
 492: CALL_OW 426
 496: ST_TO_ADDR
// def_beta_ai := GetMultiplayerSetting ( 15 ) ;
 497: LD_ADDR_EXP 23
 501: PUSH
 502: LD_INT 15
 504: PPUSH
 505: CALL_OW 426
 509: ST_TO_ADDR
// def_russian_ai := GetMultiplayerSetting ( 16 ) ;
 510: LD_ADDR_EXP 24
 514: PUSH
 515: LD_INT 16
 517: PPUSH
 518: CALL_OW 426
 522: ST_TO_ADDR
// def_difficulty := GetMultiplayerSetting ( 17 ) ;
 523: LD_ADDR_EXP 25
 527: PUSH
 528: LD_INT 17
 530: PPUSH
 531: CALL_OW 426
 535: ST_TO_ADDR
// end else
 536: GO 614
// begin Randomize ;
 538: CALL_OW 10
// def_base_level := 2 ;
 542: LD_ADDR_EXP 1
 546: PUSH
 547: LD_INT 2
 549: ST_TO_ADDR
// def_amount_of_people := 0 ;
 550: LD_ADDR_EXP 2
 554: PUSH
 555: LD_INT 0
 557: ST_TO_ADDR
// def_skill_level := 1 ;
 558: LD_ADDR_EXP 3
 562: PUSH
 563: LD_INT 1
 565: ST_TO_ADDR
// def_starting_resources := 2 ;
 566: LD_ADDR_EXP 4
 570: PUSH
 571: LD_INT 2
 573: ST_TO_ADDR
// def_shipments_density := 1 ;
 574: LD_ADDR_EXP 5
 578: PUSH
 579: LD_INT 1
 581: ST_TO_ADDR
// def_shared_vision := 1 ;
 582: LD_ADDR_EXP 6
 586: PUSH
 587: LD_INT 1
 589: ST_TO_ADDR
// def_people_respawning := 2 ;
 590: LD_ADDR_EXP 7
 594: PUSH
 595: LD_INT 2
 597: ST_TO_ADDR
// def_Russian_AI = 1 ;
 598: LD_ADDR_EXP 24
 602: PUSH
 603: LD_INT 1
 605: ST_TO_ADDR
// def_Beta_AI = 1 ;
 606: LD_ADDR_EXP 23
 610: PUSH
 611: LD_INT 1
 613: ST_TO_ADDR
// end ; is_depot := [ 0 , 1 , 2 ] [ def_base_level + 1 ] ;
 614: LD_ADDR_EXP 8
 618: PUSH
 619: LD_INT 0
 621: PUSH
 622: LD_INT 1
 624: PUSH
 625: LD_INT 2
 627: PUSH
 628: EMPTY
 629: LIST
 630: LIST
 631: LIST
 632: PUSH
 633: LD_EXP 1
 637: PUSH
 638: LD_INT 1
 640: PLUS
 641: ARRAY
 642: ST_TO_ADDR
// number_of_breastworks := [ 0 , 0 , 2 ] [ def_base_level + 1 ] ;
 643: LD_ADDR_EXP 9
 647: PUSH
 648: LD_INT 0
 650: PUSH
 651: LD_INT 0
 653: PUSH
 654: LD_INT 2
 656: PUSH
 657: EMPTY
 658: LIST
 659: LIST
 660: LIST
 661: PUSH
 662: LD_EXP 1
 666: PUSH
 667: LD_INT 1
 669: PLUS
 670: ARRAY
 671: ST_TO_ADDR
// number_of_people := [ 9 , 12 , 15 , 24 ] [ def_amount_of_people + 1 ] ;
 672: LD_ADDR_EXP 10
 676: PUSH
 677: LD_INT 9
 679: PUSH
 680: LD_INT 12
 682: PUSH
 683: LD_INT 15
 685: PUSH
 686: LD_INT 24
 688: PUSH
 689: EMPTY
 690: LIST
 691: LIST
 692: LIST
 693: LIST
 694: PUSH
 695: LD_EXP 2
 699: PUSH
 700: LD_INT 1
 702: PLUS
 703: ARRAY
 704: ST_TO_ADDR
// skill_level := [ 3 , 5 , 6 , 7 ] [ def_skill_level + 1 ] ;
 705: LD_ADDR_EXP 11
 709: PUSH
 710: LD_INT 3
 712: PUSH
 713: LD_INT 5
 715: PUSH
 716: LD_INT 6
 718: PUSH
 719: LD_INT 7
 721: PUSH
 722: EMPTY
 723: LIST
 724: LIST
 725: LIST
 726: LIST
 727: PUSH
 728: LD_EXP 3
 732: PUSH
 733: LD_INT 1
 735: PLUS
 736: ARRAY
 737: ST_TO_ADDR
// starting_resources := [ [ 0 , 0 , 0 ] , [ 30 , 30 , 0 ] , [ 50 , 50 , 0 ] , [ 80 , 60 , 0 ] ] [ def_starting_resources + 1 ] ;
 738: LD_ADDR_EXP 13
 742: PUSH
 743: LD_INT 0
 745: PUSH
 746: LD_INT 0
 748: PUSH
 749: LD_INT 0
 751: PUSH
 752: EMPTY
 753: LIST
 754: LIST
 755: LIST
 756: PUSH
 757: LD_INT 30
 759: PUSH
 760: LD_INT 30
 762: PUSH
 763: LD_INT 0
 765: PUSH
 766: EMPTY
 767: LIST
 768: LIST
 769: LIST
 770: PUSH
 771: LD_INT 50
 773: PUSH
 774: LD_INT 50
 776: PUSH
 777: LD_INT 0
 779: PUSH
 780: EMPTY
 781: LIST
 782: LIST
 783: LIST
 784: PUSH
 785: LD_INT 80
 787: PUSH
 788: LD_INT 60
 790: PUSH
 791: LD_INT 0
 793: PUSH
 794: EMPTY
 795: LIST
 796: LIST
 797: LIST
 798: PUSH
 799: EMPTY
 800: LIST
 801: LIST
 802: LIST
 803: LIST
 804: PUSH
 805: LD_EXP 4
 809: PUSH
 810: LD_INT 1
 812: PLUS
 813: ARRAY
 814: ST_TO_ADDR
// starting_crates := [ [ 10 ] , [ 7 , 14 ] , [ 6 , 12 , 18 ] , [ 5 , 10 , 15 , 20 ] ] [ def_starting_resources + 1 ] ;
 815: LD_ADDR_EXP 12
 819: PUSH
 820: LD_INT 10
 822: PUSH
 823: EMPTY
 824: LIST
 825: PUSH
 826: LD_INT 7
 828: PUSH
 829: LD_INT 14
 831: PUSH
 832: EMPTY
 833: LIST
 834: LIST
 835: PUSH
 836: LD_INT 6
 838: PUSH
 839: LD_INT 12
 841: PUSH
 842: LD_INT 18
 844: PUSH
 845: EMPTY
 846: LIST
 847: LIST
 848: LIST
 849: PUSH
 850: LD_INT 5
 852: PUSH
 853: LD_INT 10
 855: PUSH
 856: LD_INT 15
 858: PUSH
 859: LD_INT 20
 861: PUSH
 862: EMPTY
 863: LIST
 864: LIST
 865: LIST
 866: LIST
 867: PUSH
 868: EMPTY
 869: LIST
 870: LIST
 871: LIST
 872: LIST
 873: PUSH
 874: LD_EXP 4
 878: PUSH
 879: LD_INT 1
 881: PLUS
 882: ARRAY
 883: ST_TO_ADDR
// shipments_density := [ 150 , 125 , 100 , 50 ] [ def_shipments_density + 1 ] ;
 884: LD_ADDR_EXP 14
 888: PUSH
 889: LD_INT 150
 891: PUSH
 892: LD_INT 125
 894: PUSH
 895: LD_INT 100
 897: PUSH
 898: LD_INT 50
 900: PUSH
 901: EMPTY
 902: LIST
 903: LIST
 904: LIST
 905: LIST
 906: PUSH
 907: LD_EXP 5
 911: PUSH
 912: LD_INT 1
 914: PLUS
 915: ARRAY
 916: ST_TO_ADDR
// respawning_time_min := [ 0 0$0 , 5 5$00 , 3 3$0 ] [ def_people_respawning + 1 ] ;
 917: LD_ADDR_EXP 18
 921: PUSH
 922: LD_INT 0
 924: PUSH
 925: LD_INT 10500
 927: PUSH
 928: LD_INT 6300
 930: PUSH
 931: EMPTY
 932: LIST
 933: LIST
 934: LIST
 935: PUSH
 936: LD_EXP 7
 940: PUSH
 941: LD_INT 1
 943: PLUS
 944: ARRAY
 945: ST_TO_ADDR
// respawning_time_max := [ 0 0$0 , 15 15$00 , 5 5$0 ] [ def_people_respawning + 1 ] ;
 946: LD_ADDR_EXP 19
 950: PUSH
 951: LD_INT 0
 953: PUSH
 954: LD_INT 31500
 956: PUSH
 957: LD_INT 10500
 959: PUSH
 960: EMPTY
 961: LIST
 962: LIST
 963: LIST
 964: PUSH
 965: LD_EXP 7
 969: PUSH
 970: LD_INT 1
 972: PLUS
 973: ARRAY
 974: ST_TO_ADDR
// BetaAI := [ 0 , 1 ] [ def_beta_ai + 1 ] ;
 975: LD_ADDR_EXP 20
 979: PUSH
 980: LD_INT 0
 982: PUSH
 983: LD_INT 1
 985: PUSH
 986: EMPTY
 987: LIST
 988: LIST
 989: PUSH
 990: LD_EXP 23
 994: PUSH
 995: LD_INT 1
 997: PLUS
 998: ARRAY
 999: ST_TO_ADDR
// RussianAI := [ 0 , 1 ] [ def_russian_ai + 1 ] ;
1000: LD_ADDR_EXP 21
1004: PUSH
1005: LD_INT 0
1007: PUSH
1008: LD_INT 1
1010: PUSH
1011: EMPTY
1012: LIST
1013: LIST
1014: PUSH
1015: LD_EXP 24
1019: PUSH
1020: LD_INT 1
1022: PLUS
1023: ARRAY
1024: ST_TO_ADDR
// difficultyC := [ 3 , 5 , 7 , 9 ] [ def_difficulty + 1 ] ;
1025: LD_ADDR_EXP 22
1029: PUSH
1030: LD_INT 3
1032: PUSH
1033: LD_INT 5
1035: PUSH
1036: LD_INT 7
1038: PUSH
1039: LD_INT 9
1041: PUSH
1042: EMPTY
1043: LIST
1044: LIST
1045: LIST
1046: LIST
1047: PUSH
1048: LD_EXP 25
1052: PUSH
1053: LD_INT 1
1055: PLUS
1056: ARRAY
1057: ST_TO_ADDR
// end ;
1058: LD_VAR 0 1
1062: RET
// function init_map ; var i , j ; begin
1063: LD_INT 0
1065: PPUSH
1066: PPUSH
1067: PPUSH
// depot_def := [ [ 37 , 18 , 3 ] , [ 74 , 19 , 2 ] , [ 85 , 108 , 0 ] , [ 119 , 108 , 5 ] ] ;
1068: LD_ADDR_EXP 32
1072: PUSH
1073: LD_INT 37
1075: PUSH
1076: LD_INT 18
1078: PUSH
1079: LD_INT 3
1081: PUSH
1082: EMPTY
1083: LIST
1084: LIST
1085: LIST
1086: PUSH
1087: LD_INT 74
1089: PUSH
1090: LD_INT 19
1092: PUSH
1093: LD_INT 2
1095: PUSH
1096: EMPTY
1097: LIST
1098: LIST
1099: LIST
1100: PUSH
1101: LD_INT 85
1103: PUSH
1104: LD_INT 108
1106: PUSH
1107: LD_INT 0
1109: PUSH
1110: EMPTY
1111: LIST
1112: LIST
1113: LIST
1114: PUSH
1115: LD_INT 119
1117: PUSH
1118: LD_INT 108
1120: PUSH
1121: LD_INT 5
1123: PUSH
1124: EMPTY
1125: LIST
1126: LIST
1127: LIST
1128: PUSH
1129: EMPTY
1130: LIST
1131: LIST
1132: LIST
1133: LIST
1134: ST_TO_ADDR
// for i in depot_def do
1135: LD_ADDR_VAR 0 2
1139: PUSH
1140: LD_EXP 32
1144: PUSH
1145: FOR_IN
1146: IFFALSE 1220
// start_def := start_def ^ [ [ ShiftX ( i [ 1 ] , i [ 3 ] , 10 ) , ShiftY ( i [ 2 ] , i [ 3 ] , 10 ) ] ] ;
1148: LD_ADDR_EXP 34
1152: PUSH
1153: LD_EXP 34
1157: PUSH
1158: LD_VAR 0 2
1162: PUSH
1163: LD_INT 1
1165: ARRAY
1166: PPUSH
1167: LD_VAR 0 2
1171: PUSH
1172: LD_INT 3
1174: ARRAY
1175: PPUSH
1176: LD_INT 10
1178: PPUSH
1179: CALL_OW 272
1183: PUSH
1184: LD_VAR 0 2
1188: PUSH
1189: LD_INT 2
1191: ARRAY
1192: PPUSH
1193: LD_VAR 0 2
1197: PUSH
1198: LD_INT 3
1200: ARRAY
1201: PPUSH
1202: LD_INT 10
1204: PPUSH
1205: CALL_OW 273
1209: PUSH
1210: EMPTY
1211: LIST
1212: LIST
1213: PUSH
1214: EMPTY
1215: LIST
1216: ADD
1217: ST_TO_ADDR
1218: GO 1145
1220: POP
1221: POP
// breastworks_def := [ [ [ 45 , 34 , 5 ] , [ 58 , 29 , 5 ] ] , [ [ 69 , 31 , 0 ] , [ 91 , 12 , 0 ] ] , [ [ 68 , 94 , 3 ] , [ 76 , 93 , 3 ] ] , [ [ 110 , 99 , 3 ] , [ 122 , 95 , 2 ] ] , ] ;
1222: LD_ADDR_EXP 33
1226: PUSH
1227: LD_INT 45
1229: PUSH
1230: LD_INT 34
1232: PUSH
1233: LD_INT 5
1235: PUSH
1236: EMPTY
1237: LIST
1238: LIST
1239: LIST
1240: PUSH
1241: LD_INT 58
1243: PUSH
1244: LD_INT 29
1246: PUSH
1247: LD_INT 5
1249: PUSH
1250: EMPTY
1251: LIST
1252: LIST
1253: LIST
1254: PUSH
1255: EMPTY
1256: LIST
1257: LIST
1258: PUSH
1259: LD_INT 69
1261: PUSH
1262: LD_INT 31
1264: PUSH
1265: LD_INT 0
1267: PUSH
1268: EMPTY
1269: LIST
1270: LIST
1271: LIST
1272: PUSH
1273: LD_INT 91
1275: PUSH
1276: LD_INT 12
1278: PUSH
1279: LD_INT 0
1281: PUSH
1282: EMPTY
1283: LIST
1284: LIST
1285: LIST
1286: PUSH
1287: EMPTY
1288: LIST
1289: LIST
1290: PUSH
1291: LD_INT 68
1293: PUSH
1294: LD_INT 94
1296: PUSH
1297: LD_INT 3
1299: PUSH
1300: EMPTY
1301: LIST
1302: LIST
1303: LIST
1304: PUSH
1305: LD_INT 76
1307: PUSH
1308: LD_INT 93
1310: PUSH
1311: LD_INT 3
1313: PUSH
1314: EMPTY
1315: LIST
1316: LIST
1317: LIST
1318: PUSH
1319: EMPTY
1320: LIST
1321: LIST
1322: PUSH
1323: LD_INT 110
1325: PUSH
1326: LD_INT 99
1328: PUSH
1329: LD_INT 3
1331: PUSH
1332: EMPTY
1333: LIST
1334: LIST
1335: LIST
1336: PUSH
1337: LD_INT 122
1339: PUSH
1340: LD_INT 95
1342: PUSH
1343: LD_INT 2
1345: PUSH
1346: EMPTY
1347: LIST
1348: LIST
1349: LIST
1350: PUSH
1351: EMPTY
1352: LIST
1353: LIST
1354: PUSH
1355: EMPTY
1356: LIST
1357: LIST
1358: LIST
1359: LIST
1360: ST_TO_ADDR
// end ;
1361: LD_VAR 0 1
1365: RET
// function set_shared_visions_and_alliances ; var i , j ; begin
1366: LD_INT 0
1368: PPUSH
1369: PPUSH
1370: PPUSH
// if not Team_Game then
1371: LD_EXP 30
1375: NOT
1376: IFFALSE 1474
// begin for i = 1 to 8 do
1378: LD_ADDR_VAR 0 2
1382: PUSH
1383: DOUBLE
1384: LD_INT 1
1386: DEC
1387: ST_TO_ADDR
1388: LD_INT 8
1390: PUSH
1391: FOR_TO
1392: IFFALSE 1470
// for j = 1 to 8 do
1394: LD_ADDR_VAR 0 3
1398: PUSH
1399: DOUBLE
1400: LD_INT 1
1402: DEC
1403: ST_TO_ADDR
1404: LD_INT 8
1406: PUSH
1407: FOR_TO
1408: IFFALSE 1466
// if i <> j then
1410: LD_VAR 0 2
1414: PUSH
1415: LD_VAR 0 3
1419: NONEQUAL
1420: IFFALSE 1444
// SetAttitude ( i , j , att_neutral , true ) else
1422: LD_VAR 0 2
1426: PPUSH
1427: LD_VAR 0 3
1431: PPUSH
1432: LD_INT 0
1434: PPUSH
1435: LD_INT 1
1437: PPUSH
1438: CALL_OW 80
1442: GO 1464
// SetAttitude ( i , j , att_friend , true ) ;
1444: LD_VAR 0 2
1448: PPUSH
1449: LD_VAR 0 3
1453: PPUSH
1454: LD_INT 1
1456: PPUSH
1457: LD_INT 1
1459: PPUSH
1460: CALL_OW 80
1464: GO 1407
1466: POP
1467: POP
1468: GO 1391
1470: POP
1471: POP
// end else
1472: GO 1649
// begin if def_shared_vision then
1474: LD_EXP 6
1478: IFFALSE 1543
// begin for i in Teams do
1480: LD_ADDR_VAR 0 2
1484: PUSH
1485: LD_EXP 27
1489: PUSH
1490: FOR_IN
1491: IFFALSE 1541
// for j = 2 to i do
1493: LD_ADDR_VAR 0 3
1497: PUSH
1498: DOUBLE
1499: LD_INT 2
1501: DEC
1502: ST_TO_ADDR
1503: LD_VAR 0 2
1507: PUSH
1508: FOR_TO
1509: IFFALSE 1537
// ChangeSideFog ( i [ j ] , i [ 1 ] ) ;
1511: LD_VAR 0 2
1515: PUSH
1516: LD_VAR 0 3
1520: ARRAY
1521: PPUSH
1522: LD_VAR 0 2
1526: PUSH
1527: LD_INT 1
1529: ARRAY
1530: PPUSH
1531: CALL_OW 343
1535: GO 1508
1537: POP
1538: POP
1539: GO 1490
1541: POP
1542: POP
// end ; for i = 1 to 8 do
1543: LD_ADDR_VAR 0 2
1547: PUSH
1548: DOUBLE
1549: LD_INT 1
1551: DEC
1552: ST_TO_ADDR
1553: LD_INT 8
1555: PUSH
1556: FOR_TO
1557: IFFALSE 1647
// for j = 1 to 8 do
1559: LD_ADDR_VAR 0 3
1563: PUSH
1564: DOUBLE
1565: LD_INT 1
1567: DEC
1568: ST_TO_ADDR
1569: LD_INT 8
1571: PUSH
1572: FOR_TO
1573: IFFALSE 1643
// if Side_Teams [ i ] = Side_Teams [ j ] then
1575: LD_EXP 26
1579: PUSH
1580: LD_VAR 0 2
1584: ARRAY
1585: PUSH
1586: LD_EXP 26
1590: PUSH
1591: LD_VAR 0 3
1595: ARRAY
1596: EQUAL
1597: IFFALSE 1621
// SetAttitude ( i , j , att_friend , true ) else
1599: LD_VAR 0 2
1603: PPUSH
1604: LD_VAR 0 3
1608: PPUSH
1609: LD_INT 1
1611: PPUSH
1612: LD_INT 1
1614: PPUSH
1615: CALL_OW 80
1619: GO 1641
// SetAttitude ( i , j , att_enemy , true ) ;
1621: LD_VAR 0 2
1625: PPUSH
1626: LD_VAR 0 3
1630: PPUSH
1631: LD_INT 2
1633: PPUSH
1634: LD_INT 1
1636: PPUSH
1637: CALL_OW 80
1641: GO 1572
1643: POP
1644: POP
1645: GO 1556
1647: POP
1648: POP
// end ; end ;
1649: LD_VAR 0 1
1653: RET
// function prepare_people ( count , cl , x , y , r ) ; var i , j , un ; begin
1654: LD_INT 0
1656: PPUSH
1657: PPUSH
1658: PPUSH
1659: PPUSH
// result := [ ] ;
1660: LD_ADDR_VAR 0 6
1664: PUSH
1665: EMPTY
1666: ST_TO_ADDR
// for i := 1 to count do
1667: LD_ADDR_VAR 0 7
1671: PUSH
1672: DOUBLE
1673: LD_INT 1
1675: DEC
1676: ST_TO_ADDR
1677: LD_VAR 0 1
1681: PUSH
1682: FOR_TO
1683: IFFALSE 2079
// begin uc_direction := Rand ( 0 , 5 ) ;
1685: LD_ADDR_OWVAR 24
1689: PUSH
1690: LD_INT 0
1692: PPUSH
1693: LD_INT 5
1695: PPUSH
1696: CALL_OW 12
1700: ST_TO_ADDR
// if commander then
1701: LD_LOC 1
1705: IFFALSE 1814
// begin hc_name := mp_sides_players_names [ uc_side ] ;
1707: LD_ADDR_OWVAR 26
1711: PUSH
1712: LD_OWVAR 19
1716: PUSH
1717: LD_OWVAR 20
1721: ARRAY
1722: ST_TO_ADDR
// PrepareHuman ( Rand ( 1 , 2 ) , cl , skill_level + 2 ) ;
1723: LD_INT 1
1725: PPUSH
1726: LD_INT 2
1728: PPUSH
1729: CALL_OW 12
1733: PPUSH
1734: LD_VAR 0 2
1738: PPUSH
1739: LD_EXP 11
1743: PUSH
1744: LD_INT 2
1746: PLUS
1747: PPUSH
1748: CALL_OW 380
// hc_importance := 105 ;
1752: LD_ADDR_OWVAR 32
1756: PUSH
1757: LD_INT 105
1759: ST_TO_ADDR
// commander := false ;
1760: LD_ADDR_LOC 1
1764: PUSH
1765: LD_INT 0
1767: ST_TO_ADDR
// if Multiplayer then
1768: LD_OWVAR 4
1772: IFFALSE 1812
// begin hc_gallery := MULTIAVATARS ;
1774: LD_ADDR_OWVAR 33
1778: PUSH
1779: LD_STRING MULTIAVATARS
1781: ST_TO_ADDR
// hc_face_number := Multiplayer_GetPlayerSideNum ( uc_side ) ;
1782: LD_ADDR_OWVAR 34
1786: PUSH
1787: LD_OWVAR 20
1791: PPUSH
1792: CALL_OW 525
1796: ST_TO_ADDR
// hc_sex := Multiplayer_GetPlayerSex ( uc_side ) ;
1797: LD_ADDR_OWVAR 27
1801: PUSH
1802: LD_OWVAR 20
1806: PPUSH
1807: CALL_OW 526
1811: ST_TO_ADDR
// end ; end else
1812: GO 1877
// begin hc_name :=  ;
1814: LD_ADDR_OWVAR 26
1818: PUSH
1819: LD_STRING 
1821: ST_TO_ADDR
// PrepareHuman ( rand ( 1 , 2 ) , cl , skill_level ) ;
1822: LD_INT 1
1824: PPUSH
1825: LD_INT 2
1827: PPUSH
1828: CALL_OW 12
1832: PPUSH
1833: LD_VAR 0 2
1837: PPUSH
1838: LD_EXP 11
1842: PPUSH
1843: CALL_OW 380
// hc_importance := 0 ;
1847: LD_ADDR_OWVAR 32
1851: PUSH
1852: LD_INT 0
1854: ST_TO_ADDR
// if Multiplayer then
1855: LD_OWVAR 4
1859: IFFALSE 1877
// begin hc_gallery :=  ;
1861: LD_ADDR_OWVAR 33
1865: PUSH
1866: LD_STRING 
1868: ST_TO_ADDR
// hc_face_number := 0 ;
1869: LD_ADDR_OWVAR 34
1873: PUSH
1874: LD_INT 0
1876: ST_TO_ADDR
// end ; end ; un := CreateHuman ;
1877: LD_ADDR_VAR 0 9
1881: PUSH
1882: CALL_OW 44
1886: ST_TO_ADDR
// if global_defined then
1887: LD_LOC 3
1891: IFFALSE 2031
// begin if ( cl = class_soldier ) then
1893: LD_VAR 0 2
1897: PUSH
1898: LD_INT 1
1900: EQUAL
1901: IFFALSE 1921
// j := i + soldiers_created else
1903: LD_ADDR_VAR 0 8
1907: PUSH
1908: LD_VAR 0 7
1912: PUSH
1913: LD_LOC 4
1917: PLUS
1918: ST_TO_ADDR
1919: GO 1931
// j := i ;
1921: LD_ADDR_VAR 0 8
1925: PUSH
1926: LD_VAR 0 7
1930: ST_TO_ADDR
// CopySkills ( global_units [ cl ] [ j ] , un ) ;
1931: LD_LOC 2
1935: PUSH
1936: LD_VAR 0 2
1940: ARRAY
1941: PUSH
1942: LD_VAR 0 8
1946: ARRAY
1947: PPUSH
1948: LD_VAR 0 9
1952: PPUSH
1953: CALL_OW 510
// SetAttr ( un , attr_speed , GetAttr ( global_units [ cl ] [ j ] , attr_speed ) ) ;
1957: LD_VAR 0 9
1961: PPUSH
1962: LD_INT 2
1964: PPUSH
1965: LD_LOC 2
1969: PUSH
1970: LD_VAR 0 2
1974: ARRAY
1975: PUSH
1976: LD_VAR 0 8
1980: ARRAY
1981: PPUSH
1982: LD_INT 2
1984: PPUSH
1985: CALL_OW 260
1989: PPUSH
1990: CALL_OW 239
// SetAttr ( un , attr_stamina , GetAttr ( global_units [ cl ] [ j ] , attr_stamina ) ) ;
1994: LD_VAR 0 9
1998: PPUSH
1999: LD_INT 1
2001: PPUSH
2002: LD_LOC 2
2006: PUSH
2007: LD_VAR 0 2
2011: ARRAY
2012: PUSH
2013: LD_VAR 0 8
2017: ARRAY
2018: PPUSH
2019: LD_INT 1
2021: PPUSH
2022: CALL_OW 260
2026: PPUSH
2027: CALL_OW 239
// end ; PlaceUnitXYR ( un , x , y , r , false ) ;
2031: LD_VAR 0 9
2035: PPUSH
2036: LD_VAR 0 3
2040: PPUSH
2041: LD_VAR 0 4
2045: PPUSH
2046: LD_VAR 0 5
2050: PPUSH
2051: LD_INT 0
2053: PPUSH
2054: CALL_OW 50
// result := result ^ [ un ] ;
2058: LD_ADDR_VAR 0 6
2062: PUSH
2063: LD_VAR 0 6
2067: PUSH
2068: LD_VAR 0 9
2072: PUSH
2073: EMPTY
2074: LIST
2075: ADD
2076: ST_TO_ADDR
// end ;
2077: GO 1682
2079: POP
2080: POP
// if not global_defined then
2081: LD_LOC 3
2085: NOT
2086: IFFALSE 2164
// if ( global_units >= cl ) then
2088: LD_LOC 2
2092: PUSH
2093: LD_VAR 0 2
2097: GREATEREQUAL
2098: IFFALSE 2139
// global_units := Replace ( global_units , cl , global_units [ cl ] ^ result ) else
2100: LD_ADDR_LOC 2
2104: PUSH
2105: LD_LOC 2
2109: PPUSH
2110: LD_VAR 0 2
2114: PPUSH
2115: LD_LOC 2
2119: PUSH
2120: LD_VAR 0 2
2124: ARRAY
2125: PUSH
2126: LD_VAR 0 6
2130: ADD
2131: PPUSH
2132: CALL_OW 1
2136: ST_TO_ADDR
2137: GO 2164
// global_units := Replace ( global_units , cl , result ) ;
2139: LD_ADDR_LOC 2
2143: PUSH
2144: LD_LOC 2
2148: PPUSH
2149: LD_VAR 0 2
2153: PPUSH
2154: LD_VAR 0 6
2158: PPUSH
2159: CALL_OW 1
2163: ST_TO_ADDR
// end ;
2164: LD_VAR 0 6
2168: RET
// function prepare_side ( side ) ; var pos , x , y , dir , i , r , sol , br , dep ; begin
2169: LD_INT 0
2171: PPUSH
2172: PPUSH
2173: PPUSH
2174: PPUSH
2175: PPUSH
2176: PPUSH
2177: PPUSH
2178: PPUSH
2179: PPUSH
2180: PPUSH
// pos := Side_Positions [ side ] ;
2181: LD_ADDR_VAR 0 3
2185: PUSH
2186: LD_EXP 28
2190: PUSH
2191: LD_VAR 0 1
2195: ARRAY
2196: ST_TO_ADDR
// uc_nation := Side_Nations [ side ] ;
2197: LD_ADDR_OWVAR 21
2201: PUSH
2202: LD_EXP 29
2206: PUSH
2207: LD_VAR 0 1
2211: ARRAY
2212: ST_TO_ADDR
// uc_side := side ;
2213: LD_ADDR_OWVAR 20
2217: PUSH
2218: LD_VAR 0 1
2222: ST_TO_ADDR
// x := depot_def [ pos ] [ 1 ] ;
2223: LD_ADDR_VAR 0 4
2227: PUSH
2228: LD_EXP 32
2232: PUSH
2233: LD_VAR 0 3
2237: ARRAY
2238: PUSH
2239: LD_INT 1
2241: ARRAY
2242: ST_TO_ADDR
// y := depot_def [ pos ] [ 2 ] ;
2243: LD_ADDR_VAR 0 5
2247: PUSH
2248: LD_EXP 32
2252: PUSH
2253: LD_VAR 0 3
2257: ARRAY
2258: PUSH
2259: LD_INT 2
2261: ARRAY
2262: ST_TO_ADDR
// dir := depot_def [ pos ] [ 3 ] ;
2263: LD_ADDR_VAR 0 6
2267: PUSH
2268: LD_EXP 32
2272: PUSH
2273: LD_VAR 0 3
2277: ARRAY
2278: PUSH
2279: LD_INT 3
2281: ARRAY
2282: ST_TO_ADDR
// if is_depot then
2283: LD_EXP 8
2287: IFFALSE 2394
// begin bc_type = b_depot ;
2289: LD_ADDR_OWVAR 42
2293: PUSH
2294: LD_INT 0
2296: ST_TO_ADDR
// dep := CreateAndPlaceBuildingXYD ( x , y , dir ) ;
2297: LD_ADDR_VAR 0 11
2301: PUSH
2302: LD_VAR 0 4
2306: PPUSH
2307: LD_VAR 0 5
2311: PPUSH
2312: LD_VAR 0 6
2316: PPUSH
2317: CALL_OW 47
2321: ST_TO_ADDR
// SetBName ( dep , @ & side ) ;
2322: LD_VAR 0 11
2326: PPUSH
2327: LD_STRING @
2329: PUSH
2330: LD_VAR 0 1
2334: STR
2335: PPUSH
2336: CALL_OW 500
// SetResourceType ( GetBase ( dep ) , mat_cans , starting_resources [ mat_cans ] ) ;
2340: LD_VAR 0 11
2344: PPUSH
2345: CALL_OW 274
2349: PPUSH
2350: LD_INT 1
2352: PPUSH
2353: LD_EXP 13
2357: PUSH
2358: LD_INT 1
2360: ARRAY
2361: PPUSH
2362: CALL_OW 277
// SetResourceType ( GetBase ( dep ) , mat_oil , starting_resources [ mat_oil ] ) ;
2366: LD_VAR 0 11
2370: PPUSH
2371: CALL_OW 274
2375: PPUSH
2376: LD_INT 2
2378: PPUSH
2379: LD_EXP 13
2383: PUSH
2384: LD_INT 2
2386: ARRAY
2387: PPUSH
2388: CALL_OW 277
// end else
2392: GO 2538
// begin for i := 1 to 3 do
2394: LD_ADDR_VAR 0 7
2398: PUSH
2399: DOUBLE
2400: LD_INT 1
2402: DEC
2403: ST_TO_ADDR
2404: LD_INT 3
2406: PUSH
2407: FOR_TO
2408: IFFALSE 2536
// begin r := starting_resources [ i ] ;
2410: LD_ADDR_VAR 0 8
2414: PUSH
2415: LD_EXP 13
2419: PUSH
2420: LD_VAR 0 7
2424: ARRAY
2425: ST_TO_ADDR
// while r >= 10 do
2426: LD_VAR 0 8
2430: PUSH
2431: LD_INT 10
2433: GREATEREQUAL
2434: IFFALSE 2534
// if r > 50 then
2436: LD_VAR 0 8
2440: PUSH
2441: LD_INT 50
2443: GREATER
2444: IFFALSE 2490
// begin CreateResourcesXYR ( i , 5 , x , y , 4 , false ) ;
2446: LD_VAR 0 7
2450: PPUSH
2451: LD_INT 5
2453: PPUSH
2454: LD_VAR 0 4
2458: PPUSH
2459: LD_VAR 0 5
2463: PPUSH
2464: LD_INT 4
2466: PPUSH
2467: LD_INT 0
2469: PPUSH
2470: CALL_OW 60
// r := r - 50 ;
2474: LD_ADDR_VAR 0 8
2478: PUSH
2479: LD_VAR 0 8
2483: PUSH
2484: LD_INT 50
2486: MINUS
2487: ST_TO_ADDR
// end else
2488: GO 2532
// begin CreateResourcesXYR ( i , r div 10 , x , y , 4 , false ) ;
2490: LD_VAR 0 7
2494: PPUSH
2495: LD_VAR 0 8
2499: PUSH
2500: LD_INT 10
2502: DIV
2503: PPUSH
2504: LD_VAR 0 4
2508: PPUSH
2509: LD_VAR 0 5
2513: PPUSH
2514: LD_INT 4
2516: PPUSH
2517: LD_INT 0
2519: PPUSH
2520: CALL_OW 60
// r := 0 ;
2524: LD_ADDR_VAR 0 8
2528: PUSH
2529: LD_INT 0
2531: ST_TO_ADDR
// end ;
2532: GO 2426
// end ;
2534: GO 2407
2536: POP
2537: POP
// end ; for r in starting_crates do
2538: LD_ADDR_VAR 0 8
2542: PUSH
2543: LD_EXP 12
2547: PUSH
2548: FOR_IN
2549: IFFALSE 2581
// CreateResourcesXYR ( mat_cans , 5 , x , y , r , false ) ;
2551: LD_INT 1
2553: PPUSH
2554: LD_INT 5
2556: PPUSH
2557: LD_VAR 0 4
2561: PPUSH
2562: LD_VAR 0 5
2566: PPUSH
2567: LD_VAR 0 8
2571: PPUSH
2572: LD_INT 0
2574: PPUSH
2575: CALL_OW 60
2579: GO 2548
2581: POP
2582: POP
// commander := true ;
2583: LD_ADDR_LOC 1
2587: PUSH
2588: LD_INT 1
2590: ST_TO_ADDR
// soldiers_created := 0 ;
2591: LD_ADDR_LOC 4
2595: PUSH
2596: LD_INT 0
2598: ST_TO_ADDR
// for i := 1 to number_of_breastworks do
2599: LD_ADDR_VAR 0 7
2603: PUSH
2604: DOUBLE
2605: LD_INT 1
2607: DEC
2608: ST_TO_ADDR
2609: LD_EXP 9
2613: PUSH
2614: FOR_TO
2615: IFFALSE 2837
// begin x := breastworks_def [ pos ] [ i ] [ 1 ] ;
2617: LD_ADDR_VAR 0 4
2621: PUSH
2622: LD_EXP 33
2626: PUSH
2627: LD_VAR 0 3
2631: ARRAY
2632: PUSH
2633: LD_VAR 0 7
2637: ARRAY
2638: PUSH
2639: LD_INT 1
2641: ARRAY
2642: ST_TO_ADDR
// y := breastworks_def [ pos ] [ i ] [ 2 ] ;
2643: LD_ADDR_VAR 0 5
2647: PUSH
2648: LD_EXP 33
2652: PUSH
2653: LD_VAR 0 3
2657: ARRAY
2658: PUSH
2659: LD_VAR 0 7
2663: ARRAY
2664: PUSH
2665: LD_INT 2
2667: ARRAY
2668: ST_TO_ADDR
// dir := breastworks_def [ pos ] [ i ] [ 3 ] ;
2669: LD_ADDR_VAR 0 6
2673: PUSH
2674: LD_EXP 33
2678: PUSH
2679: LD_VAR 0 3
2683: ARRAY
2684: PUSH
2685: LD_VAR 0 7
2689: ARRAY
2690: PUSH
2691: LD_INT 3
2693: ARRAY
2694: ST_TO_ADDR
// bc_type := b_breastwork ;
2695: LD_ADDR_OWVAR 42
2699: PUSH
2700: LD_INT 31
2702: ST_TO_ADDR
// br := CreateAndPlaceBuildingXYD ( x , y , dir ) ;
2703: LD_ADDR_VAR 0 10
2707: PUSH
2708: LD_VAR 0 4
2712: PPUSH
2713: LD_VAR 0 5
2717: PPUSH
2718: LD_VAR 0 6
2722: PPUSH
2723: CALL_OW 47
2727: ST_TO_ADDR
// x := ShiftX ( x , dir , 2 ) ;
2728: LD_ADDR_VAR 0 4
2732: PUSH
2733: LD_VAR 0 4
2737: PPUSH
2738: LD_VAR 0 6
2742: PPUSH
2743: LD_INT 2
2745: PPUSH
2746: CALL_OW 272
2750: ST_TO_ADDR
// y := ShiftY ( y , dir , 2 ) ;
2751: LD_ADDR_VAR 0 5
2755: PUSH
2756: LD_VAR 0 5
2760: PPUSH
2761: LD_VAR 0 6
2765: PPUSH
2766: LD_INT 2
2768: PPUSH
2769: CALL_OW 273
2773: ST_TO_ADDR
// sol := prepare_people ( 1 , class_soldier , x , y , 0 ) [ 1 ] ;
2774: LD_ADDR_VAR 0 9
2778: PUSH
2779: LD_INT 1
2781: PPUSH
2782: LD_INT 1
2784: PPUSH
2785: LD_VAR 0 4
2789: PPUSH
2790: LD_VAR 0 5
2794: PPUSH
2795: LD_INT 0
2797: PPUSH
2798: CALL 1654 0 5
2802: PUSH
2803: LD_INT 1
2805: ARRAY
2806: ST_TO_ADDR
// soldiers_created := soldiers_created + 1 ;
2807: LD_ADDR_LOC 4
2811: PUSH
2812: LD_LOC 4
2816: PUSH
2817: LD_INT 1
2819: PLUS
2820: ST_TO_ADDR
// ComEnterUnit ( sol , br ) ;
2821: LD_VAR 0 9
2825: PPUSH
2826: LD_VAR 0 10
2830: PPUSH
2831: CALL_OW 120
// end ;
2835: GO 2614
2837: POP
2838: POP
// x := start_def [ pos ] [ 1 ] ;
2839: LD_ADDR_VAR 0 4
2843: PUSH
2844: LD_EXP 34
2848: PUSH
2849: LD_VAR 0 3
2853: ARRAY
2854: PUSH
2855: LD_INT 1
2857: ARRAY
2858: ST_TO_ADDR
// y := start_def [ pos ] [ 2 ] ;
2859: LD_ADDR_VAR 0 5
2863: PUSH
2864: LD_EXP 34
2868: PUSH
2869: LD_VAR 0 3
2873: ARRAY
2874: PUSH
2875: LD_INT 2
2877: ARRAY
2878: ST_TO_ADDR
// prepare_people ( nsol - number_of_breastworks , class_soldier , x , y , 5 ) ;
2879: LD_LOC 8
2883: PUSH
2884: LD_EXP 9
2888: MINUS
2889: PPUSH
2890: LD_INT 1
2892: PPUSH
2893: LD_VAR 0 4
2897: PPUSH
2898: LD_VAR 0 5
2902: PPUSH
2903: LD_INT 5
2905: PPUSH
2906: CALL 1654 0 5
// prepare_people ( neng , class_engineer , x , y , 5 ) ;
2910: LD_LOC 5
2914: PPUSH
2915: LD_INT 2
2917: PPUSH
2918: LD_VAR 0 4
2922: PPUSH
2923: LD_VAR 0 5
2927: PPUSH
2928: LD_INT 5
2930: PPUSH
2931: CALL 1654 0 5
// prepare_people ( nmech , class_mechanic , x , y , 5 ) ;
2935: LD_LOC 7
2939: PPUSH
2940: LD_INT 3
2942: PPUSH
2943: LD_VAR 0 4
2947: PPUSH
2948: LD_VAR 0 5
2952: PPUSH
2953: LD_INT 5
2955: PPUSH
2956: CALL 1654 0 5
// prepare_people ( nsci , class_scientistic , x , y , 5 ) ;
2960: LD_LOC 6
2964: PPUSH
2965: LD_INT 4
2967: PPUSH
2968: LD_VAR 0 4
2972: PPUSH
2973: LD_VAR 0 5
2977: PPUSH
2978: LD_INT 5
2980: PPUSH
2981: CALL 1654 0 5
// global_defined := true ;
2985: LD_ADDR_LOC 3
2989: PUSH
2990: LD_INT 1
2992: ST_TO_ADDR
// end ;
2993: LD_VAR 0 2
2997: RET
// function prepare_sides ; var i ; begin
2998: LD_INT 0
3000: PPUSH
3001: PPUSH
// global_units := [ ] ;
3002: LD_ADDR_LOC 2
3006: PUSH
3007: EMPTY
3008: ST_TO_ADDR
// global_defined := false ;
3009: LD_ADDR_LOC 3
3013: PUSH
3014: LD_INT 0
3016: ST_TO_ADDR
// CountClassMembers ;
3017: CALL 3067 0 0
// for i := 1 to 8 do
3021: LD_ADDR_VAR 0 2
3025: PUSH
3026: DOUBLE
3027: LD_INT 1
3029: DEC
3030: ST_TO_ADDR
3031: LD_INT 8
3033: PUSH
3034: FOR_TO
3035: IFFALSE 3060
// if Side_Positions [ i ] then
3037: LD_EXP 28
3041: PUSH
3042: LD_VAR 0 2
3046: ARRAY
3047: IFFALSE 3058
// prepare_side ( i ) ;
3049: LD_VAR 0 2
3053: PPUSH
3054: CALL 2169 0 1
3058: GO 3034
3060: POP
3061: POP
// end ;
3062: LD_VAR 0 1
3066: RET
// function CountClassMembers ; var Mode ; begin
3067: LD_INT 0
3069: PPUSH
3070: PPUSH
// Mode := 1 ;
3071: LD_ADDR_VAR 0 2
3075: PUSH
3076: LD_INT 1
3078: ST_TO_ADDR
// neng := number_of_people ;
3079: LD_ADDR_LOC 5
3083: PUSH
3084: LD_EXP 10
3088: ST_TO_ADDR
// nsol := neng div [ 4 , 3 ] [ Mode ] ;
3089: LD_ADDR_LOC 8
3093: PUSH
3094: LD_LOC 5
3098: PUSH
3099: LD_INT 4
3101: PUSH
3102: LD_INT 3
3104: PUSH
3105: EMPTY
3106: LIST
3107: LIST
3108: PUSH
3109: LD_VAR 0 2
3113: ARRAY
3114: DIV
3115: ST_TO_ADDR
// if ( nsol < number_of_breastworks ) then
3116: LD_LOC 8
3120: PUSH
3121: LD_EXP 9
3125: LESS
3126: IFFALSE 3138
// nsol := number_of_breastworks ;
3128: LD_ADDR_LOC 8
3132: PUSH
3133: LD_EXP 9
3137: ST_TO_ADDR
// neng := neng - nsol ;
3138: LD_ADDR_LOC 5
3142: PUSH
3143: LD_LOC 5
3147: PUSH
3148: LD_LOC 8
3152: MINUS
3153: ST_TO_ADDR
// nsci := neng div [ 3 , 2 ] [ Mode ] ;
3154: LD_ADDR_LOC 6
3158: PUSH
3159: LD_LOC 5
3163: PUSH
3164: LD_INT 3
3166: PUSH
3167: LD_INT 2
3169: PUSH
3170: EMPTY
3171: LIST
3172: LIST
3173: PUSH
3174: LD_VAR 0 2
3178: ARRAY
3179: DIV
3180: ST_TO_ADDR
// if ( nsci < 1 ) then
3181: LD_LOC 6
3185: PUSH
3186: LD_INT 1
3188: LESS
3189: IFFALSE 3199
// nsci := 1 ;
3191: LD_ADDR_LOC 6
3195: PUSH
3196: LD_INT 1
3198: ST_TO_ADDR
// neng := neng - nsci ;
3199: LD_ADDR_LOC 5
3203: PUSH
3204: LD_LOC 5
3208: PUSH
3209: LD_LOC 6
3213: MINUS
3214: ST_TO_ADDR
// nmech := [ neng div 2 , 0 ] [ Mode ] ;
3215: LD_ADDR_LOC 7
3219: PUSH
3220: LD_LOC 5
3224: PUSH
3225: LD_INT 2
3227: DIV
3228: PUSH
3229: LD_INT 0
3231: PUSH
3232: EMPTY
3233: LIST
3234: LIST
3235: PUSH
3236: LD_VAR 0 2
3240: ARRAY
3241: ST_TO_ADDR
// neng := neng - nmech ;
3242: LD_ADDR_LOC 5
3246: PUSH
3247: LD_LOC 5
3251: PUSH
3252: LD_LOC 7
3256: MINUS
3257: ST_TO_ADDR
// if ( neng < 1 ) then
3258: LD_LOC 5
3262: PUSH
3263: LD_INT 1
3265: LESS
3266: IFFALSE 3276
// neng := 1 ;
3268: LD_ADDR_LOC 5
3272: PUSH
3273: LD_INT 1
3275: ST_TO_ADDR
// end ;
3276: LD_VAR 0 1
3280: RET
// starting var i ; begin enable_human_prediction := true ;
3281: LD_ADDR_OWVAR 51
3285: PUSH
3286: LD_INT 1
3288: ST_TO_ADDR
// mp_selectmsg := true ;
3289: LD_ADDR_OWVAR 13
3293: PUSH
3294: LD_INT 1
3296: ST_TO_ADDR
// read_multiplayer_and_game_parameters ;
3297: CALL 0 0 0
// init_map ;
3301: CALL 1063 0 0
// init_respawning ;
3305: CALL 3524 0 0
// set_shared_visions_and_alliances ;
3309: CALL 1366 0 0
// ResetFog ;
3313: CALL_OW 335
// prepare_sides ;
3317: CALL 2998 0 0
// ShowTimer ;
3321: CALL 12559 0 0
// music_nat := Side_Nations [ your_side ] ;
3325: LD_ADDR_OWVAR 71
3329: PUSH
3330: LD_EXP 29
3334: PUSH
3335: LD_OWVAR 2
3339: ARRAY
3340: ST_TO_ADDR
// SetSide ( amgeneral1 , GetSide ( FilterUnitsInArea ( LeftBeta , [ f_type , unit_human ] ) [ 3 ] ) ) ;
3341: LD_INT 1
3343: PPUSH
3344: LD_INT 1
3346: PPUSH
3347: LD_INT 21
3349: PUSH
3350: LD_INT 1
3352: PUSH
3353: EMPTY
3354: LIST
3355: LIST
3356: PPUSH
3357: CALL_OW 70
3361: PUSH
3362: LD_INT 3
3364: ARRAY
3365: PPUSH
3366: CALL_OW 255
3370: PPUSH
3371: CALL_OW 235
// SetSide ( amgeneral2 , GetSide ( FilterUnitsInArea ( RightBeta , [ f_type , unit_human ] ) [ 3 ] ) ) ;
3375: LD_INT 2
3377: PPUSH
3378: LD_INT 2
3380: PPUSH
3381: LD_INT 21
3383: PUSH
3384: LD_INT 1
3386: PUSH
3387: EMPTY
3388: LIST
3389: LIST
3390: PPUSH
3391: CALL_OW 70
3395: PUSH
3396: LD_INT 3
3398: ARRAY
3399: PPUSH
3400: CALL_OW 255
3404: PPUSH
3405: CALL_OW 235
// SetSide ( rugeneral1 , GetSide ( FilterUnitsInArea ( LeftRussian , [ f_type , unit_human ] ) [ 3 ] ) ) ;
3409: LD_INT 4
3411: PPUSH
3412: LD_INT 3
3414: PPUSH
3415: LD_INT 21
3417: PUSH
3418: LD_INT 1
3420: PUSH
3421: EMPTY
3422: LIST
3423: LIST
3424: PPUSH
3425: CALL_OW 70
3429: PUSH
3430: LD_INT 3
3432: ARRAY
3433: PPUSH
3434: CALL_OW 255
3438: PPUSH
3439: CALL_OW 235
// SetSide ( rugeneral2 , GetSide ( FilterUnitsInArea ( RightRussian , [ f_type , unit_human ] ) [ 3 ] ) ) ;
3443: LD_INT 5
3445: PPUSH
3446: LD_INT 4
3448: PPUSH
3449: LD_INT 21
3451: PUSH
3452: LD_INT 1
3454: PUSH
3455: EMPTY
3456: LIST
3457: LIST
3458: PPUSH
3459: CALL_OW 70
3463: PUSH
3464: LD_INT 3
3466: ARRAY
3467: PPUSH
3468: CALL_OW 255
3472: PPUSH
3473: CALL_OW 235
// CenterNowOnXY ( start_def [ Side_Positions [ your_side ] ] [ 1 ] , start_def [ Side_Positions [ your_side ] ] [ 2 ] ) ;
3477: LD_EXP 34
3481: PUSH
3482: LD_EXP 28
3486: PUSH
3487: LD_OWVAR 2
3491: ARRAY
3492: ARRAY
3493: PUSH
3494: LD_INT 1
3496: ARRAY
3497: PPUSH
3498: LD_EXP 34
3502: PUSH
3503: LD_EXP 28
3507: PUSH
3508: LD_OWVAR 2
3512: ARRAY
3513: ARRAY
3514: PUSH
3515: LD_INT 2
3517: ARRAY
3518: PPUSH
3519: CALL_OW 86
// end ; end_of_file
3523: END
// var respawn , inqueue ; export function init_respawning ; begin
3524: LD_INT 0
3526: PPUSH
// respawn := Rand ( 1 , 8 ) ;
3527: LD_ADDR_LOC 9
3531: PUSH
3532: LD_INT 1
3534: PPUSH
3535: LD_INT 8
3537: PPUSH
3538: CALL_OW 12
3542: ST_TO_ADDR
// inqueue := [ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ] ;
3543: LD_ADDR_LOC 10
3547: PUSH
3548: LD_INT 0
3550: PUSH
3551: LD_INT 0
3553: PUSH
3554: LD_INT 0
3556: PUSH
3557: LD_INT 0
3559: PUSH
3560: LD_INT 0
3562: PUSH
3563: LD_INT 0
3565: PUSH
3566: LD_INT 0
3568: PUSH
3569: LD_INT 0
3571: PUSH
3572: EMPTY
3573: LIST
3574: LIST
3575: LIST
3576: LIST
3577: LIST
3578: LIST
3579: LIST
3580: LIST
3581: ST_TO_ADDR
// end ;
3582: LD_VAR 0 1
3586: RET
// every 0 0$1 + 0 0$0.5 do var n , dep , aktresp ;
3587: GO 3589
3589: DISABLE
3590: LD_INT 0
3592: PPUSH
3593: PPUSH
3594: PPUSH
// begin if respawning_time_max = 0 then
3595: LD_EXP 19
3599: PUSH
3600: LD_INT 0
3602: EQUAL
3603: IFFALSE 3607
// exit ;
3605: GO 4012
// if respawn = 8 then
3607: LD_LOC 9
3611: PUSH
3612: LD_INT 8
3614: EQUAL
3615: IFFALSE 3627
// respawn := 1 else
3617: LD_ADDR_LOC 9
3621: PUSH
3622: LD_INT 1
3624: ST_TO_ADDR
3625: GO 3641
// respawn := respawn + 1 ;
3627: LD_ADDR_LOC 9
3631: PUSH
3632: LD_LOC 9
3636: PUSH
3637: LD_INT 1
3639: PLUS
3640: ST_TO_ADDR
// if Side_Positions [ respawn ] and not inqueue [ respawn ] then
3641: LD_EXP 28
3645: PUSH
3646: LD_LOC 9
3650: ARRAY
3651: PUSH
3652: LD_LOC 10
3656: PUSH
3657: LD_LOC 9
3661: ARRAY
3662: NOT
3663: AND
3664: IFFALSE 4011
// begin n := FilterAllUnits ( [ [ f_type , unit_human ] , [ f_side , respawn ] , f_not , [ f_nation , nation_nature ] ] ) ;
3666: LD_ADDR_VAR 0 1
3670: PUSH
3671: LD_INT 21
3673: PUSH
3674: LD_INT 1
3676: PUSH
3677: EMPTY
3678: LIST
3679: LIST
3680: PUSH
3681: LD_INT 22
3683: PUSH
3684: LD_LOC 9
3688: PUSH
3689: EMPTY
3690: LIST
3691: LIST
3692: PUSH
3693: LD_INT 3
3695: PUSH
3696: LD_INT 23
3698: PUSH
3699: LD_INT 0
3701: PUSH
3702: EMPTY
3703: LIST
3704: LIST
3705: PUSH
3706: EMPTY
3707: LIST
3708: LIST
3709: LIST
3710: LIST
3711: PPUSH
3712: CALL_OW 69
3716: ST_TO_ADDR
// if n < number_of_people then
3717: LD_VAR 0 1
3721: PUSH
3722: LD_EXP 10
3726: LESS
3727: IFFALSE 4008
// begin dep := FilterAllUnits ( [ [ f_type , unit_building ] , [ f_or , [ f_btype , b_depot ] , [ f_btype , b_warehouse ] ] , [ f_ok ] , [ f_side , respawn ] ] ) ;
3729: LD_ADDR_VAR 0 2
3733: PUSH
3734: LD_INT 21
3736: PUSH
3737: LD_INT 3
3739: PUSH
3740: EMPTY
3741: LIST
3742: LIST
3743: PUSH
3744: LD_INT 2
3746: PUSH
3747: LD_INT 30
3749: PUSH
3750: LD_INT 0
3752: PUSH
3753: EMPTY
3754: LIST
3755: LIST
3756: PUSH
3757: LD_INT 30
3759: PUSH
3760: LD_INT 1
3762: PUSH
3763: EMPTY
3764: LIST
3765: LIST
3766: PUSH
3767: EMPTY
3768: LIST
3769: LIST
3770: LIST
3771: PUSH
3772: LD_INT 50
3774: PUSH
3775: EMPTY
3776: LIST
3777: PUSH
3778: LD_INT 22
3780: PUSH
3781: LD_LOC 9
3785: PUSH
3786: EMPTY
3787: LIST
3788: LIST
3789: PUSH
3790: EMPTY
3791: LIST
3792: LIST
3793: LIST
3794: LIST
3795: PPUSH
3796: CALL_OW 69
3800: ST_TO_ADDR
// if dep then
3801: LD_VAR 0 2
3805: IFFALSE 4005
// begin aktresp := respawn ;
3807: LD_ADDR_VAR 0 3
3811: PUSH
3812: LD_LOC 9
3816: ST_TO_ADDR
// inqueue := Replace ( inqueue , aktresp , true ) ;
3817: LD_ADDR_LOC 10
3821: PUSH
3822: LD_LOC 10
3826: PPUSH
3827: LD_VAR 0 3
3831: PPUSH
3832: LD_INT 1
3834: PPUSH
3835: CALL_OW 1
3839: ST_TO_ADDR
// enable ;
3840: ENABLE
// wait ( rand ( respawning_time_min , respawning_time_max ) ) ;
3841: LD_EXP 18
3845: PPUSH
3846: LD_EXP 19
3850: PPUSH
3851: CALL_OW 12
3855: PPUSH
3856: CALL_OW 67
// inqueue := Replace ( inqueue , aktresp , false ) ;
3860: LD_ADDR_LOC 10
3864: PUSH
3865: LD_LOC 10
3869: PPUSH
3870: LD_VAR 0 3
3874: PPUSH
3875: LD_INT 0
3877: PPUSH
3878: CALL_OW 1
3882: ST_TO_ADDR
// hc_name :=  ;
3883: LD_ADDR_OWVAR 26
3887: PUSH
3888: LD_STRING 
3890: ST_TO_ADDR
// hc_importance := 0 ;
3891: LD_ADDR_OWVAR 32
3895: PUSH
3896: LD_INT 0
3898: ST_TO_ADDR
// PrepareHuman ( 0 , 0 , skill_level div 2 ) ;
3899: LD_INT 0
3901: PPUSH
3902: LD_INT 0
3904: PPUSH
3905: LD_EXP 11
3909: PUSH
3910: LD_INT 2
3912: DIV
3913: PPUSH
3914: CALL_OW 380
// uc_nation := Side_Nations [ aktresp ] ;
3918: LD_ADDR_OWVAR 21
3922: PUSH
3923: LD_EXP 29
3927: PUSH
3928: LD_VAR 0 3
3932: ARRAY
3933: ST_TO_ADDR
// uc_side := aktresp ;
3934: LD_ADDR_OWVAR 20
3938: PUSH
3939: LD_VAR 0 3
3943: ST_TO_ADDR
// dep := dep [ Rand ( 1 , dep ) ] ;
3944: LD_ADDR_VAR 0 2
3948: PUSH
3949: LD_VAR 0 2
3953: PUSH
3954: LD_INT 1
3956: PPUSH
3957: LD_VAR 0 2
3961: PPUSH
3962: CALL_OW 12
3966: ARRAY
3967: ST_TO_ADDR
// PlaceUnitXYR ( CreateHuman , GetX ( dep ) , GetY ( dep ) , 7 , true ) ;
3968: CALL_OW 44
3972: PPUSH
3973: LD_VAR 0 2
3977: PPUSH
3978: CALL_OW 250
3982: PPUSH
3983: LD_VAR 0 2
3987: PPUSH
3988: CALL_OW 251
3992: PPUSH
3993: LD_INT 7
3995: PPUSH
3996: LD_INT 1
3998: PPUSH
3999: CALL_OW 50
// end else
4003: GO 4006
// enable ;
4005: ENABLE
// end else
4006: GO 4009
// enable ;
4008: ENABLE
// end else
4009: GO 4012
// enable ;
4011: ENABLE
// end ; end_of_file
4012: PPOPN 3
4014: END
// on BuildingStarted ( b , u ) do begin if GetBType ( b ) in [ b_depot , b_warehouse ] then
4015: LD_VAR 0 1
4019: PPUSH
4020: CALL_OW 266
4024: PUSH
4025: LD_INT 0
4027: PUSH
4028: LD_INT 1
4030: PUSH
4031: EMPTY
4032: LIST
4033: LIST
4034: IN
4035: IFFALSE 4060
// SetBName ( b , @ & GetSide ( b ) ) ;
4037: LD_VAR 0 1
4041: PPUSH
4042: LD_STRING @
4044: PUSH
4045: LD_VAR 0 1
4049: PPUSH
4050: CALL_OW 255
4054: STR
4055: PPUSH
4056: CALL_OW 500
// end ;
4060: PPOPN 2
4062: END
// on BuildingCaptured ( b , o , e ) do begin if GetBType ( b ) in [ b_depot , b_warehouse ] then
4063: LD_VAR 0 1
4067: PPUSH
4068: CALL_OW 266
4072: PUSH
4073: LD_INT 0
4075: PUSH
4076: LD_INT 1
4078: PUSH
4079: EMPTY
4080: LIST
4081: LIST
4082: IN
4083: IFFALSE 4108
// SetBName ( b , @ & GetSide ( b ) ) ;
4085: LD_VAR 0 1
4089: PPUSH
4090: LD_STRING @
4092: PUSH
4093: LD_VAR 0 1
4097: PPUSH
4098: CALL_OW 255
4102: STR
4103: PPUSH
4104: CALL_OW 500
// end ;
4108: PPOPN 3
4110: END
// on VehicleConstructed ( un , fac ) do var i , l ;
4111: LD_INT 0
4113: PPUSH
4114: PPUSH
// begin if BetaAI = 1 then
4115: LD_EXP 20
4119: PUSH
4120: LD_INT 1
4122: EQUAL
4123: IFFALSE 4240
// if fac = amfab2 then
4125: LD_VAR 0 2
4129: PUSH
4130: LD_EXP 46
4134: EQUAL
4135: IFFALSE 4240
// if GetSide ( un ) = cpu1 then
4137: LD_VAR 0 1
4141: PPUSH
4142: CALL_OW 255
4146: PUSH
4147: LD_EXP 60
4151: EQUAL
4152: IFFALSE 4240
// begin if un in FilterAllUnits ( [ [ f_side , cpu1 ] , [ f_type , unit_vehicle ] , [ f_control , control_remote ] ] ) then
4154: LD_VAR 0 1
4158: PUSH
4159: LD_INT 22
4161: PUSH
4162: LD_EXP 60
4166: PUSH
4167: EMPTY
4168: LIST
4169: LIST
4170: PUSH
4171: LD_INT 21
4173: PUSH
4174: LD_INT 2
4176: PUSH
4177: EMPTY
4178: LIST
4179: LIST
4180: PUSH
4181: LD_INT 33
4183: PUSH
4184: LD_INT 2
4186: PUSH
4187: EMPTY
4188: LIST
4189: LIST
4190: PUSH
4191: EMPTY
4192: LIST
4193: LIST
4194: LIST
4195: PPUSH
4196: CALL_OW 69
4200: IN
4201: IFFALSE 4240
// begin for l in RemoteMechanic do
4203: LD_ADDR_VAR 0 4
4207: PUSH
4208: LD_EXP 48
4212: PUSH
4213: FOR_IN
4214: IFFALSE 4238
// begin LinkVehicleToHuman ( un , l [ i ] ) ;
4216: LD_VAR 0 1
4220: PPUSH
4221: LD_VAR 0 4
4225: PUSH
4226: LD_VAR 0 3
4230: ARRAY
4231: PPUSH
4232: CALL_OW 53
// end ;
4236: GO 4213
4238: POP
4239: POP
// end ; end ; end ; end_of_file
4240: PPOPN 4
4242: END
// every 1 1$0 + 0 0$0.3 marked 10 do
4243: GO 4245
4245: DISABLE
// begin CreateCratesAnywhere ( Rand ( 4 , 5 ) , true ) ;
4246: LD_INT 4
4248: PPUSH
4249: LD_INT 5
4251: PPUSH
4252: CALL_OW 12
4256: PPUSH
4257: LD_INT 1
4259: PPUSH
4260: CALL_OW 57
// enable ;
4264: ENABLE
// end ;
4265: END
// every 0 0$1 + 0 0$0.6 marked 10 do var i , amount ;
4266: GO 4268
4268: DISABLE
4269: LD_INT 0
4271: PPUSH
4272: PPUSH
// begin case tick of 1 .. 1 1$0 :
4273: LD_OWVAR 1
4277: PUSH
4278: LD_INT 1
4280: DOUBLE
4281: GREATEREQUAL
4282: IFFALSE 4290
4284: LD_INT 2100
4286: DOUBLE
4287: LESSEQUAL
4288: IFTRUE 4292
4290: GO 4320
4292: POP
// Wait ( shipments_density / 100 * Rand ( 0 0$10 , 0 0$30 ) ) ; 1 1$0 + 1 .. 5 5$0 :
4293: LD_EXP 14
4297: PUSH
4298: LD_INT 100
4300: DIVREAL
4301: PUSH
4302: LD_INT 350
4304: PPUSH
4305: LD_INT 1050
4307: PPUSH
4308: CALL_OW 12
4312: MUL
4313: PPUSH
4314: CALL_OW 67
4318: GO 4622
4320: LD_INT 2100
4322: PUSH
4323: LD_INT 1
4325: PLUS
4326: DOUBLE
4327: GREATEREQUAL
4328: IFFALSE 4336
4330: LD_INT 10500
4332: DOUBLE
4333: LESSEQUAL
4334: IFTRUE 4338
4336: GO 4366
4338: POP
// Wait ( shipments_density / 100 * Rand ( 0 0$30 , 0 0$45 ) ) ; 5 5$0 + 1 .. 10 10$0 :
4339: LD_EXP 14
4343: PUSH
4344: LD_INT 100
4346: DIVREAL
4347: PUSH
4348: LD_INT 1050
4350: PPUSH
4351: LD_INT 1575
4353: PPUSH
4354: CALL_OW 12
4358: MUL
4359: PPUSH
4360: CALL_OW 67
4364: GO 4622
4366: LD_INT 10500
4368: PUSH
4369: LD_INT 1
4371: PLUS
4372: DOUBLE
4373: GREATEREQUAL
4374: IFFALSE 4382
4376: LD_INT 21000
4378: DOUBLE
4379: LESSEQUAL
4380: IFTRUE 4384
4382: GO 4412
4384: POP
// Wait ( shipments_density / 100 * Rand ( 0 0$45 , 1 1$0 ) ) ; 10 10$0 + 1 .. 20 20$0 :
4385: LD_EXP 14
4389: PUSH
4390: LD_INT 100
4392: DIVREAL
4393: PUSH
4394: LD_INT 1575
4396: PPUSH
4397: LD_INT 2100
4399: PPUSH
4400: CALL_OW 12
4404: MUL
4405: PPUSH
4406: CALL_OW 67
4410: GO 4622
4412: LD_INT 21000
4414: PUSH
4415: LD_INT 1
4417: PLUS
4418: DOUBLE
4419: GREATEREQUAL
4420: IFFALSE 4428
4422: LD_INT 42000
4424: DOUBLE
4425: LESSEQUAL
4426: IFTRUE 4430
4428: GO 4458
4430: POP
// Wait ( shipments_density / 100 * Rand ( 1 1$0 , 1 1$15 ) ) ; 20 20$0 + 1 .. 30 30$0 :
4431: LD_EXP 14
4435: PUSH
4436: LD_INT 100
4438: DIVREAL
4439: PUSH
4440: LD_INT 2100
4442: PPUSH
4443: LD_INT 2625
4445: PPUSH
4446: CALL_OW 12
4450: MUL
4451: PPUSH
4452: CALL_OW 67
4456: GO 4622
4458: LD_INT 42000
4460: PUSH
4461: LD_INT 1
4463: PLUS
4464: DOUBLE
4465: GREATEREQUAL
4466: IFFALSE 4474
4468: LD_INT 63000
4470: DOUBLE
4471: LESSEQUAL
4472: IFTRUE 4476
4474: GO 4504
4476: POP
// Wait ( shipments_density / 100 * Rand ( 1 1$15 , 1 1$30 ) ) ; 30 30$0 + 1 .. 50 50$0 :
4477: LD_EXP 14
4481: PUSH
4482: LD_INT 100
4484: DIVREAL
4485: PUSH
4486: LD_INT 2625
4488: PPUSH
4489: LD_INT 3150
4491: PPUSH
4492: CALL_OW 12
4496: MUL
4497: PPUSH
4498: CALL_OW 67
4502: GO 4622
4504: LD_INT 63000
4506: PUSH
4507: LD_INT 1
4509: PLUS
4510: DOUBLE
4511: GREATEREQUAL
4512: IFFALSE 4520
4514: LD_INT 105000
4516: DOUBLE
4517: LESSEQUAL
4518: IFTRUE 4522
4520: GO 4550
4522: POP
// Wait ( shipments_density / 100 * Rand ( 1 1$30 , 1 1$45 ) ) ; 50 50$0 + 1 .. 300 300$0 :
4523: LD_EXP 14
4527: PUSH
4528: LD_INT 100
4530: DIVREAL
4531: PUSH
4532: LD_INT 3150
4534: PPUSH
4535: LD_INT 3675
4537: PPUSH
4538: CALL_OW 12
4542: MUL
4543: PPUSH
4544: CALL_OW 67
4548: GO 4622
4550: LD_INT 105000
4552: PUSH
4553: LD_INT 1
4555: PLUS
4556: DOUBLE
4557: GREATEREQUAL
4558: IFFALSE 4566
4560: LD_INT 630000
4562: DOUBLE
4563: LESSEQUAL
4564: IFTRUE 4568
4566: GO 4596
4568: POP
// Wait ( shipments_density / 100 * Rand ( 1 1$45 , 2 2$0 ) ) ; else
4569: LD_EXP 14
4573: PUSH
4574: LD_INT 100
4576: DIVREAL
4577: PUSH
4578: LD_INT 3675
4580: PPUSH
4581: LD_INT 4200
4583: PPUSH
4584: CALL_OW 12
4588: MUL
4589: PPUSH
4590: CALL_OW 67
4594: GO 4622
4596: POP
// Wait ( shipments_density / 100 * Rand ( 2 2$0 , 2 2$30 ) ) ; end ;
4597: LD_EXP 14
4601: PUSH
4602: LD_INT 100
4604: DIVREAL
4605: PUSH
4606: LD_INT 4200
4608: PPUSH
4609: LD_INT 5250
4611: PPUSH
4612: CALL_OW 12
4616: MUL
4617: PPUSH
4618: CALL_OW 67
// amount := Rand ( 3 , 5 ) ;
4622: LD_ADDR_VAR 0 2
4626: PUSH
4627: LD_INT 3
4629: PPUSH
4630: LD_INT 5
4632: PPUSH
4633: CALL_OW 12
4637: ST_TO_ADDR
// for i in ( Side_Positions diff [ 0 ] ) do
4638: LD_ADDR_VAR 0 1
4642: PUSH
4643: LD_EXP 28
4647: PUSH
4648: LD_INT 0
4650: PUSH
4651: EMPTY
4652: LIST
4653: DIFF
4654: PUSH
4655: FOR_IN
4656: IFFALSE 4705
// CreateCratesXYR ( amount , start_def [ i ] [ 1 ] , start_def [ i ] [ 2 ] , 20 , true ) ;
4658: LD_VAR 0 2
4662: PPUSH
4663: LD_EXP 34
4667: PUSH
4668: LD_VAR 0 1
4672: ARRAY
4673: PUSH
4674: LD_INT 1
4676: ARRAY
4677: PPUSH
4678: LD_EXP 34
4682: PUSH
4683: LD_VAR 0 1
4687: ARRAY
4688: PUSH
4689: LD_INT 2
4691: ARRAY
4692: PPUSH
4693: LD_INT 20
4695: PPUSH
4696: LD_INT 1
4698: PPUSH
4699: CALL_OW 56
4703: GO 4655
4705: POP
4706: POP
// enable ;
4707: ENABLE
// end ; end_of_file
4708: PPOPN 2
4710: END
// every 0 0$1 do var i ;
4711: GO 4713
4713: DISABLE
4714: LD_INT 0
4716: PPUSH
// begin enable ;
4717: ENABLE
// for i = 1 to Side_positions do
4718: LD_ADDR_VAR 0 1
4722: PUSH
4723: DOUBLE
4724: LD_INT 1
4726: DEC
4727: ST_TO_ADDR
4728: LD_EXP 28
4732: PUSH
4733: FOR_TO
4734: IFFALSE 4836
// if Side_positions [ i ] and ( i <> your_side ) and not MultiplayerSideAlive ( i ) and Side_Teams [ i ] and ( Side_Teams [ i ] = Side_Teams [ your_side ] ) then
4736: LD_EXP 28
4740: PUSH
4741: LD_VAR 0 1
4745: ARRAY
4746: PUSH
4747: LD_VAR 0 1
4751: PUSH
4752: LD_OWVAR 2
4756: NONEQUAL
4757: AND
4758: PUSH
4759: LD_VAR 0 1
4763: PPUSH
4764: CALL_OW 108
4768: NOT
4769: AND
4770: PUSH
4771: LD_EXP 26
4775: PUSH
4776: LD_VAR 0 1
4780: ARRAY
4781: AND
4782: PUSH
4783: LD_EXP 26
4787: PUSH
4788: LD_VAR 0 1
4792: ARRAY
4793: PUSH
4794: LD_EXP 26
4798: PUSH
4799: LD_OWVAR 2
4803: ARRAY
4804: EQUAL
4805: AND
4806: IFFALSE 4834
// SetSide ( FilterAllUnits ( [ f_side , i ] ) , your_side ) ;
4808: LD_INT 22
4810: PUSH
4811: LD_VAR 0 1
4815: PUSH
4816: EMPTY
4817: LIST
4818: LIST
4819: PPUSH
4820: CALL_OW 69
4824: PPUSH
4825: LD_OWVAR 2
4829: PPUSH
4830: CALL_OW 235
4834: GO 4733
4836: POP
4837: POP
// end ; end_of_file
4838: PPOPN 1
4840: END
// every 0 0$1 trigger BetaAI = 1 do
4841: LD_EXP 20
4845: PUSH
4846: LD_INT 1
4848: EQUAL
4849: IFFALSE 4862
4851: GO 4853
4853: DISABLE
// begin PlaceAmericanBase ;
4854: CALL 4892 0 0
// PrepareAmericanPeople ;
4858: CALL 6129 0 0
// end ;
4862: END
// every 0 0$1 trigger RussianAI = 1 do
4863: LD_EXP 21
4867: PUSH
4868: LD_INT 1
4870: EQUAL
4871: IFFALSE 4891
4873: GO 4875
4875: DISABLE
// begin PlaceRussianBase ;
4876: CALL 7900 0 0
// PrepareRussianPeople ;
4880: CALL 9017 0 0
// RemoveEnvironmentArea ( DelEnvi ) ;
4884: LD_INT 7
4886: PPUSH
4887: CALL_OW 355
// end ;
4891: END
// export amdepo1 , amlab1 , amfab1 , amarmoury ; export amdepo2 , amlab2 , amfab2 ; export USControlTower ; export function PlaceAmericanBase ; var weapon , US_Turret , i , USRadar1 , USRadar2 ; begin
4892: LD_INT 0
4894: PPUSH
4895: PPUSH
4896: PPUSH
4897: PPUSH
4898: PPUSH
4899: PPUSH
// SetTech ( 11 , cpu1 , state_disabled ) ;
4900: LD_INT 11
4902: PPUSH
4903: LD_EXP 60
4907: PPUSH
4908: LD_INT 0
4910: PPUSH
4911: CALL_OW 322
// SetTech ( 2 , cpu1 , state_disabled ) ;
4915: LD_INT 2
4917: PPUSH
4918: LD_EXP 60
4922: PPUSH
4923: LD_INT 0
4925: PPUSH
4926: CALL_OW 322
// uc_nation = 1 ;
4930: LD_ADDR_OWVAR 21
4934: PUSH
4935: LD_INT 1
4937: ST_TO_ADDR
// uc_side = cpu1 ;
4938: LD_ADDR_OWVAR 20
4942: PUSH
4943: LD_EXP 60
4947: ST_TO_ADDR
// bc_level = DifficultyC ;
4948: LD_ADDR_OWVAR 43
4952: PUSH
4953: LD_EXP 22
4957: ST_TO_ADDR
// bc_type = 1 ;
4958: LD_ADDR_OWVAR 42
4962: PUSH
4963: LD_INT 1
4965: ST_TO_ADDR
// amdepo1 = CreateAndPlaceBuildingXYD ( 37 , 18 , 3 ) ;
4966: LD_ADDR_EXP 40
4970: PUSH
4971: LD_INT 37
4973: PPUSH
4974: LD_INT 18
4976: PPUSH
4977: LD_INT 3
4979: PPUSH
4980: CALL_OW 47
4984: ST_TO_ADDR
// amdepo2 = CreateAndPlaceBuildingXYD ( 74 , 19 , 2 ) ;
4985: LD_ADDR_EXP 44
4989: PUSH
4990: LD_INT 74
4992: PPUSH
4993: LD_INT 19
4995: PPUSH
4996: LD_INT 2
4998: PPUSH
4999: CALL_OW 47
5003: ST_TO_ADDR
// SetResourceType ( GetBase ( amdepo1 ) , mat_cans , 20000 [ mat_cans ] ) ;
5004: LD_EXP 40
5008: PPUSH
5009: CALL_OW 274
5013: PPUSH
5014: LD_INT 1
5016: PPUSH
5017: LD_INT 20000
5019: PUSH
5020: LD_INT 1
5022: ARRAY
5023: PPUSH
5024: CALL_OW 277
// SetResourceType ( GetBase ( amdepo1 ) , 2 , 5000 ) ;
5028: LD_EXP 40
5032: PPUSH
5033: CALL_OW 274
5037: PPUSH
5038: LD_INT 2
5040: PPUSH
5041: LD_INT 5000
5043: PPUSH
5044: CALL_OW 277
// SetResourceType ( GetBase ( amdepo1 ) , 3 , 5000 ) ;
5048: LD_EXP 40
5052: PPUSH
5053: CALL_OW 274
5057: PPUSH
5058: LD_INT 3
5060: PPUSH
5061: LD_INT 5000
5063: PPUSH
5064: CALL_OW 277
// SetResourceType ( GetBase ( amdepo2 ) , mat_cans , 20000 [ mat_cans ] ) ;
5068: LD_EXP 44
5072: PPUSH
5073: CALL_OW 274
5077: PPUSH
5078: LD_INT 1
5080: PPUSH
5081: LD_INT 20000
5083: PUSH
5084: LD_INT 1
5086: ARRAY
5087: PPUSH
5088: CALL_OW 277
// SetResourceType ( GetBase ( amdepo2 ) , 2 , 5000 ) ;
5092: LD_EXP 44
5096: PPUSH
5097: CALL_OW 274
5101: PPUSH
5102: LD_INT 2
5104: PPUSH
5105: LD_INT 5000
5107: PPUSH
5108: CALL_OW 277
// SetResourceType ( GetBase ( amdepo2 ) , 3 , 5000 ) ;
5112: LD_EXP 44
5116: PPUSH
5117: CALL_OW 274
5121: PPUSH
5122: LD_INT 3
5124: PPUSH
5125: LD_INT 5000
5127: PPUSH
5128: CALL_OW 277
// bc_type = 5 ;
5132: LD_ADDR_OWVAR 42
5136: PUSH
5137: LD_INT 5
5139: ST_TO_ADDR
// amarmoury = CreateAndPlaceBuildingXYD ( 69 , 36 , 0 ) ;
5140: LD_ADDR_EXP 43
5144: PUSH
5145: LD_INT 69
5147: PPUSH
5148: LD_INT 36
5150: PPUSH
5151: LD_INT 0
5153: PPUSH
5154: CALL_OW 47
5158: ST_TO_ADDR
// bc_type = 32 ;
5159: LD_ADDR_OWVAR 42
5163: PUSH
5164: LD_INT 32
5166: ST_TO_ADDR
// CreateAndPlaceBuildingXYD ( 83 , 52 , 0 ) ;
5167: LD_INT 83
5169: PPUSH
5170: LD_INT 52
5172: PPUSH
5173: LD_INT 0
5175: PPUSH
5176: CALL_OW 47
// CreateAndPlaceBuildingXYD ( 102 , 49 , 5 ) ;
5180: LD_INT 102
5182: PPUSH
5183: LD_INT 49
5185: PPUSH
5186: LD_INT 5
5188: PPUSH
5189: CALL_OW 47
// CreateAndPlaceBuildingXYD ( 97 , 29 , 4 ) ;
5193: LD_INT 97
5195: PPUSH
5196: LD_INT 29
5198: PPUSH
5199: LD_INT 4
5201: PPUSH
5202: CALL_OW 47
// CreateAndPlaceBuildingXYD ( 97 , 11 , 5 ) ;
5206: LD_INT 97
5208: PPUSH
5209: LD_INT 11
5211: PPUSH
5212: LD_INT 5
5214: PPUSH
5215: CALL_OW 47
// CreateAndPlaceBuildingXYD ( 91 , 12 , 5 ) ;
5219: LD_INT 91
5221: PPUSH
5222: LD_INT 12
5224: PPUSH
5225: LD_INT 5
5227: PPUSH
5228: CALL_OW 47
// CreateAndPlaceBuildingXYD ( 86 , 18 , 4 ) ;
5232: LD_INT 86
5234: PPUSH
5235: LD_INT 18
5237: PPUSH
5238: LD_INT 4
5240: PPUSH
5241: CALL_OW 47
// CreateAndPlaceBuildingXYD ( 81 , 46 , 1 ) ;
5245: LD_INT 81
5247: PPUSH
5248: LD_INT 46
5250: PPUSH
5251: LD_INT 1
5253: PPUSH
5254: CALL_OW 47
// CreateAndPlaceBuildingXYD ( 64 , 49 , 5 ) ;
5258: LD_INT 64
5260: PPUSH
5261: LD_INT 49
5263: PPUSH
5264: LD_INT 5
5266: PPUSH
5267: CALL_OW 47
// CreateAndPlaceBuildingXYD ( 60 , 49 , 5 ) ;
5271: LD_INT 60
5273: PPUSH
5274: LD_INT 49
5276: PPUSH
5277: LD_INT 5
5279: PPUSH
5280: CALL_OW 47
// CreateAndPlaceBuildingXYD ( 47 , 38 , 0 ) ;
5284: LD_INT 47
5286: PPUSH
5287: LD_INT 38
5289: PPUSH
5290: LD_INT 0
5292: PPUSH
5293: CALL_OW 47
// CreateAndPlaceBuildingXYD ( 40 , 35 , 0 ) ;
5297: LD_INT 40
5299: PPUSH
5300: LD_INT 35
5302: PPUSH
5303: LD_INT 0
5305: PPUSH
5306: CALL_OW 47
// CreateAndPlaceBuildingXYD ( 61 , 36 , 5 ) ;
5310: LD_INT 61
5312: PPUSH
5313: LD_INT 36
5315: PPUSH
5316: LD_INT 5
5318: PPUSH
5319: CALL_OW 47
// CreateAndPlaceBuildingXYD ( 74 , 38 , 0 ) ;
5323: LD_INT 74
5325: PPUSH
5326: LD_INT 38
5328: PPUSH
5329: LD_INT 0
5331: PPUSH
5332: CALL_OW 47
// CreateAndPlaceBuildingXYD ( 98 , 48 , 5 ) ;
5336: LD_INT 98
5338: PPUSH
5339: LD_INT 48
5341: PPUSH
5342: LD_INT 5
5344: PPUSH
5345: CALL_OW 47
// CreateAndPlaceBuildingXYD ( 86 , 48 , 5 ) ;
5349: LD_INT 86
5351: PPUSH
5352: LD_INT 48
5354: PPUSH
5355: LD_INT 5
5357: PPUSH
5358: CALL_OW 47
// CreateAndPlaceBuildingXYD ( 91 , 48 , 5 ) ;
5362: LD_INT 91
5364: PPUSH
5365: LD_INT 48
5367: PPUSH
5368: LD_INT 5
5370: PPUSH
5371: CALL_OW 47
// CreateAndPlaceBuildingXYD ( 100 , 44 , 4 ) ;
5375: LD_INT 100
5377: PPUSH
5378: LD_INT 44
5380: PPUSH
5381: LD_INT 4
5383: PPUSH
5384: CALL_OW 47
// CreateAndPlaceBuildingXYD ( 93 , 10 , 5 ) ;
5388: LD_INT 93
5390: PPUSH
5391: LD_INT 10
5393: PPUSH
5394: LD_INT 5
5396: PPUSH
5397: CALL_OW 47
// CreateAndPlaceBuildingXYD ( 36 , 40 , 5 ) ;
5401: LD_INT 36
5403: PPUSH
5404: LD_INT 40
5406: PPUSH
5407: LD_INT 5
5409: PPUSH
5410: CALL_OW 47
// CreateAndPlaceBuildingXYD ( 53 , 47 , 1 ) ;
5414: LD_INT 53
5416: PPUSH
5417: LD_INT 47
5419: PPUSH
5420: LD_INT 1
5422: PPUSH
5423: CALL_OW 47
// bc_type = b_lab ;
5427: LD_ADDR_OWVAR 42
5431: PUSH
5432: LD_INT 6
5434: ST_TO_ADDR
// bc_kind1 = b_lab_weapon ;
5435: LD_ADDR_OWVAR 44
5439: PUSH
5440: LD_INT 10
5442: ST_TO_ADDR
// bc_kind2 = b_lab_computer ;
5443: LD_ADDR_OWVAR 45
5447: PUSH
5448: LD_INT 12
5450: ST_TO_ADDR
// amlab1 = CreateAndPlaceBuildingXYD ( 63 , 14 , 3 ) ;
5451: LD_ADDR_EXP 41
5455: PUSH
5456: LD_INT 63
5458: PPUSH
5459: LD_INT 14
5461: PPUSH
5462: LD_INT 3
5464: PPUSH
5465: CALL_OW 47
5469: ST_TO_ADDR
// bc_type = b_lab ;
5470: LD_ADDR_OWVAR 42
5474: PUSH
5475: LD_INT 6
5477: ST_TO_ADDR
// bc_kind1 = b_lab_opto ;
5478: LD_ADDR_OWVAR 44
5482: PUSH
5483: LD_INT 15
5485: ST_TO_ADDR
// bc_kind2 = b_lab_siberium ;
5486: LD_ADDR_OWVAR 45
5490: PUSH
5491: LD_INT 11
5493: ST_TO_ADDR
// amlab2 = CreateAndPlaceBuildingXYD ( 27 , 16 , 2 ) ;
5494: LD_ADDR_EXP 45
5498: PUSH
5499: LD_INT 27
5501: PPUSH
5502: LD_INT 16
5504: PPUSH
5505: LD_INT 2
5507: PPUSH
5508: CALL_OW 47
5512: ST_TO_ADDR
// bc_type = 3 ;
5513: LD_ADDR_OWVAR 42
5517: PUSH
5518: LD_INT 3
5520: ST_TO_ADDR
// amfab1 = CreateAndPlaceBuildingXYD ( 51 , 10 , 3 ) ;
5521: LD_ADDR_EXP 42
5525: PUSH
5526: LD_INT 51
5528: PPUSH
5529: LD_INT 10
5531: PPUSH
5532: LD_INT 3
5534: PPUSH
5535: CALL_OW 47
5539: ST_TO_ADDR
// bc_type = 3 ;
5540: LD_ADDR_OWVAR 42
5544: PUSH
5545: LD_INT 3
5547: ST_TO_ADDR
// amfab2 = CreateAndPlaceBuildingXYD ( 50 , 20 , 3 ) ;
5548: LD_ADDR_EXP 46
5552: PUSH
5553: LD_INT 50
5555: PPUSH
5556: LD_INT 20
5558: PPUSH
5559: LD_INT 3
5561: PPUSH
5562: CALL_OW 47
5566: ST_TO_ADDR
// bc_type = 17 ;
5567: LD_ADDR_OWVAR 42
5571: PUSH
5572: LD_INT 17
5574: ST_TO_ADDR
// CreateAndPlaceBuildingXYD ( 47 , 10 , 1 ) ;
5575: LD_INT 47
5577: PPUSH
5578: LD_INT 10
5580: PPUSH
5581: LD_INT 1
5583: PPUSH
5584: CALL_OW 47
// bc_type = 24 ;
5588: LD_ADDR_OWVAR 42
5592: PUSH
5593: LD_INT 24
5595: ST_TO_ADDR
// CreateAndPlaceBuildingXYD ( 54 , 10 , 4 ) ;
5596: LD_INT 54
5598: PPUSH
5599: LD_INT 10
5601: PPUSH
5602: LD_INT 4
5604: PPUSH
5605: CALL_OW 47
// bc_type = 25 ;
5609: LD_ADDR_OWVAR 42
5613: PUSH
5614: LD_INT 25
5616: ST_TO_ADDR
// CreateAndPlaceBuildingXYD ( 48 , 7 , 2 ) ;
5617: LD_INT 48
5619: PPUSH
5620: LD_INT 7
5622: PPUSH
5623: LD_INT 2
5625: PPUSH
5626: CALL_OW 47
// bc_type = 21 ;
5630: LD_ADDR_OWVAR 42
5634: PUSH
5635: LD_INT 21
5637: ST_TO_ADDR
// CreateAndPlaceBuildingXYD ( 51 , 6 , 3 ) ;
5638: LD_INT 51
5640: PPUSH
5641: LD_INT 6
5643: PPUSH
5644: LD_INT 3
5646: PPUSH
5647: CALL_OW 47
// bc_type = 16 ;
5651: LD_ADDR_OWVAR 42
5655: PUSH
5656: LD_INT 16
5658: ST_TO_ADDR
// CreateAndPlaceBuildingXYD ( 55 , 14 , 5 ) ;
5659: LD_INT 55
5661: PPUSH
5662: LD_INT 14
5664: PPUSH
5665: LD_INT 5
5667: PPUSH
5668: CALL_OW 47
// bc_type = 18 ;
5672: LD_ADDR_OWVAR 42
5676: PUSH
5677: LD_INT 18
5679: ST_TO_ADDR
// CreateAndPlaceBuildingXYD ( 46 , 20 , 1 ) ;
5680: LD_INT 46
5682: PPUSH
5683: LD_INT 20
5685: PPUSH
5686: LD_INT 1
5688: PPUSH
5689: CALL_OW 47
// bc_type = 20 ;
5693: LD_ADDR_OWVAR 42
5697: PUSH
5698: LD_INT 20
5700: ST_TO_ADDR
// CreateAndPlaceBuildingXYD ( 53 , 20 , 4 ) ;
5701: LD_INT 53
5703: PPUSH
5704: LD_INT 20
5706: PPUSH
5707: LD_INT 4
5709: PPUSH
5710: CALL_OW 47
// bc_type = 21 ;
5714: LD_ADDR_OWVAR 42
5718: PUSH
5719: LD_INT 21
5721: ST_TO_ADDR
// CreateAndPlaceBuildingXYD ( 54 , 24 , 5 ) ;
5722: LD_INT 54
5724: PPUSH
5725: LD_INT 24
5727: PPUSH
5728: LD_INT 5
5730: PPUSH
5731: CALL_OW 47
// bc_type = 16 ;
5735: LD_ADDR_OWVAR 42
5739: PUSH
5740: LD_INT 16
5742: ST_TO_ADDR
// CreateAndPlaceBuildingXYD ( 47 , 17 , 2 ) ;
5743: LD_INT 47
5745: PPUSH
5746: LD_INT 17
5748: PPUSH
5749: LD_INT 2
5751: PPUSH
5752: CALL_OW 47
// bc_type = 28 ;
5756: LD_ADDR_OWVAR 42
5760: PUSH
5761: LD_INT 28
5763: ST_TO_ADDR
// CreateAndPlaceBuildingXYD ( 29 , 4 , 0 ) ;
5764: LD_INT 29
5766: PPUSH
5767: LD_INT 4
5769: PPUSH
5770: LD_INT 0
5772: PPUSH
5773: CALL_OW 47
// CreateAndPlaceBuildingXYD ( 59 , 2 , 3 ) ;
5777: LD_INT 59
5779: PPUSH
5780: LD_INT 2
5782: PPUSH
5783: LD_INT 3
5785: PPUSH
5786: CALL_OW 47
// CreateAndPlaceBuildingXYD ( 75 , 2 , 4 ) ;
5790: LD_INT 75
5792: PPUSH
5793: LD_INT 2
5795: PPUSH
5796: LD_INT 4
5798: PPUSH
5799: CALL_OW 47
// CreateAndPlaceBuildingXYD ( 55 , 4 , 2 ) ;
5803: LD_INT 55
5805: PPUSH
5806: LD_INT 4
5808: PPUSH
5809: LD_INT 2
5811: PPUSH
5812: CALL_OW 47
// CreateAndPlaceBuildingXYD ( 38 , 3 , 2 ) ;
5816: LD_INT 38
5818: PPUSH
5819: LD_INT 3
5821: PPUSH
5822: LD_INT 2
5824: PPUSH
5825: CALL_OW 47
// SetResourceVisibility ( 19 , 3 , cpu1 ) ;
5829: LD_INT 19
5831: PPUSH
5832: LD_INT 3
5834: PPUSH
5835: LD_EXP 60
5839: PPUSH
5840: CALL_OW 441
// SetResourceVisibility ( 17 , 7 , cpu1 ) ;
5844: LD_INT 17
5846: PPUSH
5847: LD_INT 7
5849: PPUSH
5850: LD_EXP 60
5854: PPUSH
5855: CALL_OW 441
// bc_type = 29 ;
5859: LD_ADDR_OWVAR 42
5863: PUSH
5864: LD_INT 29
5866: ST_TO_ADDR
// CreateAndPlaceBuildingXYD ( 19 , 3 , 3 ) ;
5867: LD_INT 19
5869: PPUSH
5870: LD_INT 3
5872: PPUSH
5873: LD_INT 3
5875: PPUSH
5876: CALL_OW 47
// CreateAndPlaceBuildingXYD ( 17 , 7 , 3 ) ;
5880: LD_INT 17
5882: PPUSH
5883: LD_INT 7
5885: PPUSH
5886: LD_INT 3
5888: PPUSH
5889: CALL_OW 47
// SetResourceVisibility ( 80 , 4 , cpu1 ) ;
5893: LD_INT 80
5895: PPUSH
5896: LD_INT 4
5898: PPUSH
5899: LD_EXP 60
5903: PPUSH
5904: CALL_OW 441
// bc_type = 30 ;
5908: LD_ADDR_OWVAR 42
5912: PUSH
5913: LD_INT 30
5915: ST_TO_ADDR
// CreateAndPlaceBuildingXYD ( 80 , 4 , 3 ) ;
5916: LD_INT 80
5918: PPUSH
5919: LD_INT 4
5921: PPUSH
5922: LD_INT 3
5924: PPUSH
5925: CALL_OW 47
// bc_type = 33 ;
5929: LD_ADDR_OWVAR 42
5933: PUSH
5934: LD_INT 33
5936: ST_TO_ADDR
// USRadar1 = CreateAndPlaceBuildingXYD ( 62 , 45 , 4 ) ;
5937: LD_ADDR_VAR 0 5
5941: PUSH
5942: LD_INT 62
5944: PPUSH
5945: LD_INT 45
5947: PPUSH
5948: LD_INT 4
5950: PPUSH
5951: CALL_OW 47
5955: ST_TO_ADDR
// USRadar2 = CreateAndPlaceBuildingXYD ( 93 , 28 , 3 ) ;
5956: LD_ADDR_VAR 0 6
5960: PUSH
5961: LD_INT 93
5963: PPUSH
5964: LD_INT 28
5966: PPUSH
5967: LD_INT 3
5969: PPUSH
5970: CALL_OW 47
5974: ST_TO_ADDR
// PlaceWeaponTurret ( USRadar1 , 11 ) ;
5975: LD_VAR 0 5
5979: PPUSH
5980: LD_INT 11
5982: PPUSH
5983: CALL_OW 431
// PlaceWeaponTurret ( USRadar2 , 11 ) ;
5987: LD_VAR 0 6
5991: PPUSH
5992: LD_INT 11
5994: PPUSH
5995: CALL_OW 431
// bc_type = 36 ;
5999: LD_ADDR_OWVAR 42
6003: PUSH
6004: LD_INT 36
6006: ST_TO_ADDR
// USControlTower = CreateAndPlaceBuildingXYD ( 41 , 13 , 2 ) ;
6007: LD_ADDR_EXP 47
6011: PUSH
6012: LD_INT 41
6014: PPUSH
6015: LD_INT 13
6017: PPUSH
6018: LD_INT 2
6020: PPUSH
6021: CALL_OW 47
6025: ST_TO_ADDR
// weapon = [ 6 , 9 , 7 ] ;
6026: LD_ADDR_VAR 0 2
6030: PUSH
6031: LD_INT 6
6033: PUSH
6034: LD_INT 9
6036: PUSH
6037: LD_INT 7
6039: PUSH
6040: EMPTY
6041: LIST
6042: LIST
6043: LIST
6044: ST_TO_ADDR
// US_Turret := FilterAllUnits ( [ [ f_side , cpu1 ] , [ f_btype , b_bunker ] ] ) ;
6045: LD_ADDR_VAR 0 3
6049: PUSH
6050: LD_INT 22
6052: PUSH
6053: LD_EXP 60
6057: PUSH
6058: EMPTY
6059: LIST
6060: LIST
6061: PUSH
6062: LD_INT 30
6064: PUSH
6065: LD_INT 32
6067: PUSH
6068: EMPTY
6069: LIST
6070: LIST
6071: PUSH
6072: EMPTY
6073: LIST
6074: LIST
6075: PPUSH
6076: CALL_OW 69
6080: ST_TO_ADDR
// for i in US_turret do
6081: LD_ADDR_VAR 0 4
6085: PUSH
6086: LD_VAR 0 3
6090: PUSH
6091: FOR_IN
6092: IFFALSE 6122
// begin PlaceWeaponTurret ( i , weapon [ Rand ( 1 , 3 ) ] ) ;
6094: LD_VAR 0 4
6098: PPUSH
6099: LD_VAR 0 2
6103: PUSH
6104: LD_INT 1
6106: PPUSH
6107: LD_INT 3
6109: PPUSH
6110: CALL_OW 12
6114: ARRAY
6115: PPUSH
6116: CALL_OW 431
// end ;
6120: GO 6091
6122: POP
6123: POP
// end ;
6124: LD_VAR 0 1
6128: RET
// export RemoteMechanic ; export function PrepareAmericanPeople ; var US_turret , i , level , un , l ; begin
6129: LD_INT 0
6131: PPUSH
6132: PPUSH
6133: PPUSH
6134: PPUSH
6135: PPUSH
6136: PPUSH
// US_Turret := FilterAllUnits ( [ [ f_side , cpu1 ] , [ f_btype , b_bunker ] ] ) ;
6137: LD_ADDR_VAR 0 2
6141: PUSH
6142: LD_INT 22
6144: PUSH
6145: LD_EXP 60
6149: PUSH
6150: EMPTY
6151: LIST
6152: LIST
6153: PUSH
6154: LD_INT 30
6156: PUSH
6157: LD_INT 32
6159: PUSH
6160: EMPTY
6161: LIST
6162: LIST
6163: PUSH
6164: EMPTY
6165: LIST
6166: LIST
6167: PPUSH
6168: CALL_OW 69
6172: ST_TO_ADDR
// uc_side = cpu1 ;
6173: LD_ADDR_OWVAR 20
6177: PUSH
6178: LD_EXP 60
6182: ST_TO_ADDR
// uc_nation = 1 ;
6183: LD_ADDR_OWVAR 21
6187: PUSH
6188: LD_INT 1
6190: ST_TO_ADDR
// Level = difficultyC ;
6191: LD_ADDR_VAR 0 4
6195: PUSH
6196: LD_EXP 22
6200: ST_TO_ADDR
// hc_gallery =  ;
6201: LD_ADDR_OWVAR 33
6205: PUSH
6206: LD_STRING 
6208: ST_TO_ADDR
// hc_name =  ;
6209: LD_ADDR_OWVAR 26
6213: PUSH
6214: LD_STRING 
6216: ST_TO_ADDR
// for i in US_Turret do
6217: LD_ADDR_VAR 0 3
6221: PUSH
6222: LD_VAR 0 2
6226: PUSH
6227: FOR_IN
6228: IFFALSE 6357
// begin if IsInUnit ( i ) = 0 then
6230: LD_VAR 0 3
6234: PPUSH
6235: CALL_OW 310
6239: PUSH
6240: LD_INT 0
6242: EQUAL
6243: IFFALSE 6355
// begin hc_attr = [ Rand ( 9 , 11 ) , Rand ( 10 , 12 ) ] ;
6245: LD_ADDR_OWVAR 29
6249: PUSH
6250: LD_INT 9
6252: PPUSH
6253: LD_INT 11
6255: PPUSH
6256: CALL_OW 12
6260: PUSH
6261: LD_INT 10
6263: PPUSH
6264: LD_INT 12
6266: PPUSH
6267: CALL_OW 12
6271: PUSH
6272: EMPTY
6273: LIST
6274: LIST
6275: ST_TO_ADDR
// hc_skills = [ Level , Level , Level , Level ] ;
6276: LD_ADDR_OWVAR 31
6280: PUSH
6281: LD_VAR 0 4
6285: PUSH
6286: LD_VAR 0 4
6290: PUSH
6291: LD_VAR 0 4
6295: PUSH
6296: LD_VAR 0 4
6300: PUSH
6301: EMPTY
6302: LIST
6303: LIST
6304: LIST
6305: LIST
6306: ST_TO_ADDR
// hc_sex = Rand ( sex_male , sex_female ) ;
6307: LD_ADDR_OWVAR 27
6311: PUSH
6312: LD_INT 1
6314: PPUSH
6315: LD_INT 2
6317: PPUSH
6318: CALL_OW 12
6322: ST_TO_ADDR
// hc_class = 1 ;
6323: LD_ADDR_OWVAR 28
6327: PUSH
6328: LD_INT 1
6330: ST_TO_ADDR
// un := CreateHuman ;
6331: LD_ADDR_VAR 0 5
6335: PUSH
6336: CALL_OW 44
6340: ST_TO_ADDR
// PlaceHumanInUnit ( un , i ) ;
6341: LD_VAR 0 5
6345: PPUSH
6346: LD_VAR 0 3
6350: PPUSH
6351: CALL_OW 52
// end ; end ;
6355: GO 6227
6357: POP
6358: POP
// for i in amdepo1 do
6359: LD_ADDR_VAR 0 3
6363: PUSH
6364: LD_EXP 40
6368: PUSH
6369: FOR_IN
6370: IFFALSE 6547
// begin l = 0 ;
6372: LD_ADDR_VAR 0 6
6376: PUSH
6377: LD_INT 0
6379: ST_TO_ADDR
// if IsInUnit ( i ) = 0 then
6380: LD_VAR 0 3
6384: PPUSH
6385: CALL_OW 310
6389: PUSH
6390: LD_INT 0
6392: EQUAL
6393: IFFALSE 6545
// begin repeat begin hc_gallery =  ;
6395: LD_ADDR_OWVAR 33
6399: PUSH
6400: LD_STRING 
6402: ST_TO_ADDR
// hc_name =  ;
6403: LD_ADDR_OWVAR 26
6407: PUSH
6408: LD_STRING 
6410: ST_TO_ADDR
// hc_attr = [ Rand ( 9 , 11 ) , Rand ( 10 , 12 ) ] ;
6411: LD_ADDR_OWVAR 29
6415: PUSH
6416: LD_INT 9
6418: PPUSH
6419: LD_INT 11
6421: PPUSH
6422: CALL_OW 12
6426: PUSH
6427: LD_INT 10
6429: PPUSH
6430: LD_INT 12
6432: PPUSH
6433: CALL_OW 12
6437: PUSH
6438: EMPTY
6439: LIST
6440: LIST
6441: ST_TO_ADDR
// hc_skills = [ Level , Level , Level , Level ] ;
6442: LD_ADDR_OWVAR 31
6446: PUSH
6447: LD_VAR 0 4
6451: PUSH
6452: LD_VAR 0 4
6456: PUSH
6457: LD_VAR 0 4
6461: PUSH
6462: LD_VAR 0 4
6466: PUSH
6467: EMPTY
6468: LIST
6469: LIST
6470: LIST
6471: LIST
6472: ST_TO_ADDR
// hc_sex = Rand ( sex_male , sex_female ) ;
6473: LD_ADDR_OWVAR 27
6477: PUSH
6478: LD_INT 1
6480: PPUSH
6481: LD_INT 2
6483: PPUSH
6484: CALL_OW 12
6488: ST_TO_ADDR
// hc_class = 2 ;
6489: LD_ADDR_OWVAR 28
6493: PUSH
6494: LD_INT 2
6496: ST_TO_ADDR
// un = CreateHuman ;
6497: LD_ADDR_VAR 0 5
6501: PUSH
6502: CALL_OW 44
6506: ST_TO_ADDR
// PlaceHumanInUnit ( un , amdepo1 ) ;
6507: LD_VAR 0 5
6511: PPUSH
6512: LD_EXP 40
6516: PPUSH
6517: CALL_OW 52
// l = l + 1 ;
6521: LD_ADDR_VAR 0 6
6525: PUSH
6526: LD_VAR 0 6
6530: PUSH
6531: LD_INT 1
6533: PLUS
6534: ST_TO_ADDR
// end until l = 4 ;
6535: LD_VAR 0 6
6539: PUSH
6540: LD_INT 4
6542: EQUAL
6543: IFFALSE 6395
// end ; end ;
6545: GO 6369
6547: POP
6548: POP
// for i in amdepo2 do
6549: LD_ADDR_VAR 0 3
6553: PUSH
6554: LD_EXP 44
6558: PUSH
6559: FOR_IN
6560: IFFALSE 6737
// begin l = 0 ;
6562: LD_ADDR_VAR 0 6
6566: PUSH
6567: LD_INT 0
6569: ST_TO_ADDR
// if IsInUnit ( i ) = 0 then
6570: LD_VAR 0 3
6574: PPUSH
6575: CALL_OW 310
6579: PUSH
6580: LD_INT 0
6582: EQUAL
6583: IFFALSE 6735
// begin repeat begin hc_gallery =  ;
6585: LD_ADDR_OWVAR 33
6589: PUSH
6590: LD_STRING 
6592: ST_TO_ADDR
// hc_name =  ;
6593: LD_ADDR_OWVAR 26
6597: PUSH
6598: LD_STRING 
6600: ST_TO_ADDR
// hc_attr = [ Rand ( 9 , 11 ) , Rand ( 10 , 12 ) ] ;
6601: LD_ADDR_OWVAR 29
6605: PUSH
6606: LD_INT 9
6608: PPUSH
6609: LD_INT 11
6611: PPUSH
6612: CALL_OW 12
6616: PUSH
6617: LD_INT 10
6619: PPUSH
6620: LD_INT 12
6622: PPUSH
6623: CALL_OW 12
6627: PUSH
6628: EMPTY
6629: LIST
6630: LIST
6631: ST_TO_ADDR
// hc_skills = [ Level , Level , Level , Level ] ;
6632: LD_ADDR_OWVAR 31
6636: PUSH
6637: LD_VAR 0 4
6641: PUSH
6642: LD_VAR 0 4
6646: PUSH
6647: LD_VAR 0 4
6651: PUSH
6652: LD_VAR 0 4
6656: PUSH
6657: EMPTY
6658: LIST
6659: LIST
6660: LIST
6661: LIST
6662: ST_TO_ADDR
// hc_sex = Rand ( sex_male , sex_female ) ;
6663: LD_ADDR_OWVAR 27
6667: PUSH
6668: LD_INT 1
6670: PPUSH
6671: LD_INT 2
6673: PPUSH
6674: CALL_OW 12
6678: ST_TO_ADDR
// hc_class = 2 ;
6679: LD_ADDR_OWVAR 28
6683: PUSH
6684: LD_INT 2
6686: ST_TO_ADDR
// un = CreateHuman ;
6687: LD_ADDR_VAR 0 5
6691: PUSH
6692: CALL_OW 44
6696: ST_TO_ADDR
// PlaceHumanInUnit ( un , amdepo2 ) ;
6697: LD_VAR 0 5
6701: PPUSH
6702: LD_EXP 44
6706: PPUSH
6707: CALL_OW 52
// l = l + 1 ;
6711: LD_ADDR_VAR 0 6
6715: PUSH
6716: LD_VAR 0 6
6720: PUSH
6721: LD_INT 1
6723: PLUS
6724: ST_TO_ADDR
// end until l = 4 ;
6725: LD_VAR 0 6
6729: PUSH
6730: LD_INT 4
6732: EQUAL
6733: IFFALSE 6585
// end ; end ;
6735: GO 6559
6737: POP
6738: POP
// for i in amarmoury do
6739: LD_ADDR_VAR 0 3
6743: PUSH
6744: LD_EXP 43
6748: PUSH
6749: FOR_IN
6750: IFFALSE 6927
// begin l = 0 ;
6752: LD_ADDR_VAR 0 6
6756: PUSH
6757: LD_INT 0
6759: ST_TO_ADDR
// if IsInUnit ( i ) = 0 then
6760: LD_VAR 0 3
6764: PPUSH
6765: CALL_OW 310
6769: PUSH
6770: LD_INT 0
6772: EQUAL
6773: IFFALSE 6925
// begin repeat begin hc_gallery =  ;
6775: LD_ADDR_OWVAR 33
6779: PUSH
6780: LD_STRING 
6782: ST_TO_ADDR
// hc_name =  ;
6783: LD_ADDR_OWVAR 26
6787: PUSH
6788: LD_STRING 
6790: ST_TO_ADDR
// hc_attr = [ Rand ( 9 , 11 ) , Rand ( 10 , 12 ) ] ;
6791: LD_ADDR_OWVAR 29
6795: PUSH
6796: LD_INT 9
6798: PPUSH
6799: LD_INT 11
6801: PPUSH
6802: CALL_OW 12
6806: PUSH
6807: LD_INT 10
6809: PPUSH
6810: LD_INT 12
6812: PPUSH
6813: CALL_OW 12
6817: PUSH
6818: EMPTY
6819: LIST
6820: LIST
6821: ST_TO_ADDR
// hc_skills = [ Level , Level , Level , Level ] ;
6822: LD_ADDR_OWVAR 31
6826: PUSH
6827: LD_VAR 0 4
6831: PUSH
6832: LD_VAR 0 4
6836: PUSH
6837: LD_VAR 0 4
6841: PUSH
6842: LD_VAR 0 4
6846: PUSH
6847: EMPTY
6848: LIST
6849: LIST
6850: LIST
6851: LIST
6852: ST_TO_ADDR
// hc_sex = Rand ( sex_male , sex_female ) ;
6853: LD_ADDR_OWVAR 27
6857: PUSH
6858: LD_INT 1
6860: PPUSH
6861: LD_INT 2
6863: PPUSH
6864: CALL_OW 12
6868: ST_TO_ADDR
// hc_class = 5 ;
6869: LD_ADDR_OWVAR 28
6873: PUSH
6874: LD_INT 5
6876: ST_TO_ADDR
// un = CreateHuman ;
6877: LD_ADDR_VAR 0 5
6881: PUSH
6882: CALL_OW 44
6886: ST_TO_ADDR
// PlaceHumanInUnit ( un , amarmoury ) ;
6887: LD_VAR 0 5
6891: PPUSH
6892: LD_EXP 43
6896: PPUSH
6897: CALL_OW 52
// l = l + 1 ;
6901: LD_ADDR_VAR 0 6
6905: PUSH
6906: LD_VAR 0 6
6910: PUSH
6911: LD_INT 1
6913: PLUS
6914: ST_TO_ADDR
// end until l = 2 ;
6915: LD_VAR 0 6
6919: PUSH
6920: LD_INT 2
6922: EQUAL
6923: IFFALSE 6775
// end ; end ;
6925: GO 6749
6927: POP
6928: POP
// for i in amfab1 do
6929: LD_ADDR_VAR 0 3
6933: PUSH
6934: LD_EXP 42
6938: PUSH
6939: FOR_IN
6940: IFFALSE 7117
// begin l = 0 ;
6942: LD_ADDR_VAR 0 6
6946: PUSH
6947: LD_INT 0
6949: ST_TO_ADDR
// if IsInUnit ( i ) = 0 then
6950: LD_VAR 0 3
6954: PPUSH
6955: CALL_OW 310
6959: PUSH
6960: LD_INT 0
6962: EQUAL
6963: IFFALSE 7115
// begin repeat begin hc_gallery =  ;
6965: LD_ADDR_OWVAR 33
6969: PUSH
6970: LD_STRING 
6972: ST_TO_ADDR
// hc_name =  ;
6973: LD_ADDR_OWVAR 26
6977: PUSH
6978: LD_STRING 
6980: ST_TO_ADDR
// hc_attr = [ Rand ( 9 , 11 ) , Rand ( 10 , 12 ) ] ;
6981: LD_ADDR_OWVAR 29
6985: PUSH
6986: LD_INT 9
6988: PPUSH
6989: LD_INT 11
6991: PPUSH
6992: CALL_OW 12
6996: PUSH
6997: LD_INT 10
6999: PPUSH
7000: LD_INT 12
7002: PPUSH
7003: CALL_OW 12
7007: PUSH
7008: EMPTY
7009: LIST
7010: LIST
7011: ST_TO_ADDR
// hc_skills = [ Level , Level , Level , Level ] ;
7012: LD_ADDR_OWVAR 31
7016: PUSH
7017: LD_VAR 0 4
7021: PUSH
7022: LD_VAR 0 4
7026: PUSH
7027: LD_VAR 0 4
7031: PUSH
7032: LD_VAR 0 4
7036: PUSH
7037: EMPTY
7038: LIST
7039: LIST
7040: LIST
7041: LIST
7042: ST_TO_ADDR
// hc_sex = Rand ( sex_male , sex_female ) ;
7043: LD_ADDR_OWVAR 27
7047: PUSH
7048: LD_INT 1
7050: PPUSH
7051: LD_INT 2
7053: PPUSH
7054: CALL_OW 12
7058: ST_TO_ADDR
// hc_class = 3 ;
7059: LD_ADDR_OWVAR 28
7063: PUSH
7064: LD_INT 3
7066: ST_TO_ADDR
// un = CreateHuman ;
7067: LD_ADDR_VAR 0 5
7071: PUSH
7072: CALL_OW 44
7076: ST_TO_ADDR
// PlaceHumanInUnit ( un , amfab1 ) ;
7077: LD_VAR 0 5
7081: PPUSH
7082: LD_EXP 42
7086: PPUSH
7087: CALL_OW 52
// l = l + 1 ;
7091: LD_ADDR_VAR 0 6
7095: PUSH
7096: LD_VAR 0 6
7100: PUSH
7101: LD_INT 1
7103: PLUS
7104: ST_TO_ADDR
// end until l = 6 ;
7105: LD_VAR 0 6
7109: PUSH
7110: LD_INT 6
7112: EQUAL
7113: IFFALSE 6965
// end ; end ;
7115: GO 6939
7117: POP
7118: POP
// for i in amfab2 do
7119: LD_ADDR_VAR 0 3
7123: PUSH
7124: LD_EXP 46
7128: PUSH
7129: FOR_IN
7130: IFFALSE 7307
// begin l = 0 ;
7132: LD_ADDR_VAR 0 6
7136: PUSH
7137: LD_INT 0
7139: ST_TO_ADDR
// if IsInUnit ( i ) = 0 then
7140: LD_VAR 0 3
7144: PPUSH
7145: CALL_OW 310
7149: PUSH
7150: LD_INT 0
7152: EQUAL
7153: IFFALSE 7305
// begin repeat begin hc_gallery =  ;
7155: LD_ADDR_OWVAR 33
7159: PUSH
7160: LD_STRING 
7162: ST_TO_ADDR
// hc_name =  ;
7163: LD_ADDR_OWVAR 26
7167: PUSH
7168: LD_STRING 
7170: ST_TO_ADDR
// hc_attr = [ Rand ( 9 , 11 ) , Rand ( 10 , 12 ) ] ;
7171: LD_ADDR_OWVAR 29
7175: PUSH
7176: LD_INT 9
7178: PPUSH
7179: LD_INT 11
7181: PPUSH
7182: CALL_OW 12
7186: PUSH
7187: LD_INT 10
7189: PPUSH
7190: LD_INT 12
7192: PPUSH
7193: CALL_OW 12
7197: PUSH
7198: EMPTY
7199: LIST
7200: LIST
7201: ST_TO_ADDR
// hc_skills = [ Level , Level , Level , Level ] ;
7202: LD_ADDR_OWVAR 31
7206: PUSH
7207: LD_VAR 0 4
7211: PUSH
7212: LD_VAR 0 4
7216: PUSH
7217: LD_VAR 0 4
7221: PUSH
7222: LD_VAR 0 4
7226: PUSH
7227: EMPTY
7228: LIST
7229: LIST
7230: LIST
7231: LIST
7232: ST_TO_ADDR
// hc_sex = Rand ( sex_male , sex_female ) ;
7233: LD_ADDR_OWVAR 27
7237: PUSH
7238: LD_INT 1
7240: PPUSH
7241: LD_INT 2
7243: PPUSH
7244: CALL_OW 12
7248: ST_TO_ADDR
// hc_class = 3 ;
7249: LD_ADDR_OWVAR 28
7253: PUSH
7254: LD_INT 3
7256: ST_TO_ADDR
// un = CreateHuman ;
7257: LD_ADDR_VAR 0 5
7261: PUSH
7262: CALL_OW 44
7266: ST_TO_ADDR
// PlaceHumanInUnit ( un , amfab2 ) ;
7267: LD_VAR 0 5
7271: PPUSH
7272: LD_EXP 46
7276: PPUSH
7277: CALL_OW 52
// l = l + 1 ;
7281: LD_ADDR_VAR 0 6
7285: PUSH
7286: LD_VAR 0 6
7290: PUSH
7291: LD_INT 1
7293: PLUS
7294: ST_TO_ADDR
// end until l = 6 ;
7295: LD_VAR 0 6
7299: PUSH
7300: LD_INT 6
7302: EQUAL
7303: IFFALSE 7155
// end ; end ;
7305: GO 7129
7307: POP
7308: POP
// for i in USControlTower do
7309: LD_ADDR_VAR 0 3
7313: PUSH
7314: LD_EXP 47
7318: PUSH
7319: FOR_IN
7320: IFFALSE 7513
// begin l = 0 ;
7322: LD_ADDR_VAR 0 6
7326: PUSH
7327: LD_INT 0
7329: ST_TO_ADDR
// if IsInUnit ( i ) = 0 then
7330: LD_VAR 0 3
7334: PPUSH
7335: CALL_OW 310
7339: PUSH
7340: LD_INT 0
7342: EQUAL
7343: IFFALSE 7511
// begin repeat begin hc_gallery =  ;
7345: LD_ADDR_OWVAR 33
7349: PUSH
7350: LD_STRING 
7352: ST_TO_ADDR
// hc_name =  ;
7353: LD_ADDR_OWVAR 26
7357: PUSH
7358: LD_STRING 
7360: ST_TO_ADDR
// hc_attr = [ Rand ( 9 , 11 ) , Rand ( 10 , 12 ) ] ;
7361: LD_ADDR_OWVAR 29
7365: PUSH
7366: LD_INT 9
7368: PPUSH
7369: LD_INT 11
7371: PPUSH
7372: CALL_OW 12
7376: PUSH
7377: LD_INT 10
7379: PPUSH
7380: LD_INT 12
7382: PPUSH
7383: CALL_OW 12
7387: PUSH
7388: EMPTY
7389: LIST
7390: LIST
7391: ST_TO_ADDR
// hc_skills = [ Level , Level , Level , Level ] ;
7392: LD_ADDR_OWVAR 31
7396: PUSH
7397: LD_VAR 0 4
7401: PUSH
7402: LD_VAR 0 4
7406: PUSH
7407: LD_VAR 0 4
7411: PUSH
7412: LD_VAR 0 4
7416: PUSH
7417: EMPTY
7418: LIST
7419: LIST
7420: LIST
7421: LIST
7422: ST_TO_ADDR
// hc_sex = Rand ( sex_male , sex_female ) ;
7423: LD_ADDR_OWVAR 27
7427: PUSH
7428: LD_INT 1
7430: PPUSH
7431: LD_INT 2
7433: PPUSH
7434: CALL_OW 12
7438: ST_TO_ADDR
// hc_class = 3 ;
7439: LD_ADDR_OWVAR 28
7443: PUSH
7444: LD_INT 3
7446: ST_TO_ADDR
// un = CreateHuman ;
7447: LD_ADDR_VAR 0 5
7451: PUSH
7452: CALL_OW 44
7456: ST_TO_ADDR
// PlaceHumanInUnit ( un , USControlTower ) ;
7457: LD_VAR 0 5
7461: PPUSH
7462: LD_EXP 47
7466: PPUSH
7467: CALL_OW 52
// l = l + 1 ;
7471: LD_ADDR_VAR 0 6
7475: PUSH
7476: LD_VAR 0 6
7480: PUSH
7481: LD_INT 1
7483: PLUS
7484: ST_TO_ADDR
// RemoteMechanic = RemoteMechanic ^ un ;
7485: LD_ADDR_EXP 48
7489: PUSH
7490: LD_EXP 48
7494: PUSH
7495: LD_VAR 0 5
7499: ADD
7500: ST_TO_ADDR
// end until l = 3 ;
7501: LD_VAR 0 6
7505: PUSH
7506: LD_INT 3
7508: EQUAL
7509: IFFALSE 7345
// end ; end ;
7511: GO 7319
7513: POP
7514: POP
// for i in amlab1 do
7515: LD_ADDR_VAR 0 3
7519: PUSH
7520: LD_EXP 41
7524: PUSH
7525: FOR_IN
7526: IFFALSE 7703
// begin l = 0 ;
7528: LD_ADDR_VAR 0 6
7532: PUSH
7533: LD_INT 0
7535: ST_TO_ADDR
// if IsInUnit ( i ) = 0 then
7536: LD_VAR 0 3
7540: PPUSH
7541: CALL_OW 310
7545: PUSH
7546: LD_INT 0
7548: EQUAL
7549: IFFALSE 7701
// begin repeat begin hc_gallery =  ;
7551: LD_ADDR_OWVAR 33
7555: PUSH
7556: LD_STRING 
7558: ST_TO_ADDR
// hc_name =  ;
7559: LD_ADDR_OWVAR 26
7563: PUSH
7564: LD_STRING 
7566: ST_TO_ADDR
// hc_attr = [ Rand ( 9 , 11 ) , Rand ( 10 , 12 ) ] ;
7567: LD_ADDR_OWVAR 29
7571: PUSH
7572: LD_INT 9
7574: PPUSH
7575: LD_INT 11
7577: PPUSH
7578: CALL_OW 12
7582: PUSH
7583: LD_INT 10
7585: PPUSH
7586: LD_INT 12
7588: PPUSH
7589: CALL_OW 12
7593: PUSH
7594: EMPTY
7595: LIST
7596: LIST
7597: ST_TO_ADDR
// hc_skills = [ Level , Level , Level , Level ] ;
7598: LD_ADDR_OWVAR 31
7602: PUSH
7603: LD_VAR 0 4
7607: PUSH
7608: LD_VAR 0 4
7612: PUSH
7613: LD_VAR 0 4
7617: PUSH
7618: LD_VAR 0 4
7622: PUSH
7623: EMPTY
7624: LIST
7625: LIST
7626: LIST
7627: LIST
7628: ST_TO_ADDR
// hc_sex = Rand ( sex_male , sex_female ) ;
7629: LD_ADDR_OWVAR 27
7633: PUSH
7634: LD_INT 1
7636: PPUSH
7637: LD_INT 2
7639: PPUSH
7640: CALL_OW 12
7644: ST_TO_ADDR
// hc_class = 4 ;
7645: LD_ADDR_OWVAR 28
7649: PUSH
7650: LD_INT 4
7652: ST_TO_ADDR
// un = CreateHuman ;
7653: LD_ADDR_VAR 0 5
7657: PUSH
7658: CALL_OW 44
7662: ST_TO_ADDR
// PlaceHumanInUnit ( un , amlab1 ) ;
7663: LD_VAR 0 5
7667: PPUSH
7668: LD_EXP 41
7672: PPUSH
7673: CALL_OW 52
// l = l + 1 ;
7677: LD_ADDR_VAR 0 6
7681: PUSH
7682: LD_VAR 0 6
7686: PUSH
7687: LD_INT 1
7689: PLUS
7690: ST_TO_ADDR
// end until l = 4 ;
7691: LD_VAR 0 6
7695: PUSH
7696: LD_INT 4
7698: EQUAL
7699: IFFALSE 7551
// end ; end ;
7701: GO 7525
7703: POP
7704: POP
// for i in amlab2 do
7705: LD_ADDR_VAR 0 3
7709: PUSH
7710: LD_EXP 45
7714: PUSH
7715: FOR_IN
7716: IFFALSE 7893
// begin l = 0 ;
7718: LD_ADDR_VAR 0 6
7722: PUSH
7723: LD_INT 0
7725: ST_TO_ADDR
// if IsInUnit ( i ) = 0 then
7726: LD_VAR 0 3
7730: PPUSH
7731: CALL_OW 310
7735: PUSH
7736: LD_INT 0
7738: EQUAL
7739: IFFALSE 7891
// begin repeat begin hc_gallery =  ;
7741: LD_ADDR_OWVAR 33
7745: PUSH
7746: LD_STRING 
7748: ST_TO_ADDR
// hc_name =  ;
7749: LD_ADDR_OWVAR 26
7753: PUSH
7754: LD_STRING 
7756: ST_TO_ADDR
// hc_attr = [ Rand ( 9 , 11 ) , Rand ( 10 , 12 ) ] ;
7757: LD_ADDR_OWVAR 29
7761: PUSH
7762: LD_INT 9
7764: PPUSH
7765: LD_INT 11
7767: PPUSH
7768: CALL_OW 12
7772: PUSH
7773: LD_INT 10
7775: PPUSH
7776: LD_INT 12
7778: PPUSH
7779: CALL_OW 12
7783: PUSH
7784: EMPTY
7785: LIST
7786: LIST
7787: ST_TO_ADDR
// hc_skills = [ Level , Level , Level , Level ] ;
7788: LD_ADDR_OWVAR 31
7792: PUSH
7793: LD_VAR 0 4
7797: PUSH
7798: LD_VAR 0 4
7802: PUSH
7803: LD_VAR 0 4
7807: PUSH
7808: LD_VAR 0 4
7812: PUSH
7813: EMPTY
7814: LIST
7815: LIST
7816: LIST
7817: LIST
7818: ST_TO_ADDR
// hc_sex = Rand ( sex_male , sex_female ) ;
7819: LD_ADDR_OWVAR 27
7823: PUSH
7824: LD_INT 1
7826: PPUSH
7827: LD_INT 2
7829: PPUSH
7830: CALL_OW 12
7834: ST_TO_ADDR
// hc_class = 4 ;
7835: LD_ADDR_OWVAR 28
7839: PUSH
7840: LD_INT 4
7842: ST_TO_ADDR
// un = CreateHuman ;
7843: LD_ADDR_VAR 0 5
7847: PUSH
7848: CALL_OW 44
7852: ST_TO_ADDR
// PlaceHumanInUnit ( un , amlab2 ) ;
7853: LD_VAR 0 5
7857: PPUSH
7858: LD_EXP 45
7862: PPUSH
7863: CALL_OW 52
// l = l + 1 ;
7867: LD_ADDR_VAR 0 6
7871: PUSH
7872: LD_VAR 0 6
7876: PUSH
7877: LD_INT 1
7879: PLUS
7880: ST_TO_ADDR
// end until l = 4 ;
7881: LD_VAR 0 6
7885: PUSH
7886: LD_INT 4
7888: EQUAL
7889: IFFALSE 7741
// end ; end ;
7891: GO 7715
7893: POP
7894: POP
// end ;
7895: LD_VAR 0 1
7899: RET
// export rudepo1 , rulab1 , rufab1 , ruarmoury1 ; export rudepo2 , rulab2 , rufab2 , ruarmoury2 ; export function PlaceRussianBase ; var weapon , RU_Turret , i ; begin
7900: LD_INT 0
7902: PPUSH
7903: PPUSH
7904: PPUSH
7905: PPUSH
// SetTech ( 11 , cpu1 , state_disabled ) ;
7906: LD_INT 11
7908: PPUSH
7909: LD_EXP 60
7913: PPUSH
7914: LD_INT 0
7916: PPUSH
7917: CALL_OW 322
// SetTech ( 2 , cpu1 , state_disabled ) ;
7921: LD_INT 2
7923: PPUSH
7924: LD_EXP 60
7928: PPUSH
7929: LD_INT 0
7931: PPUSH
7932: CALL_OW 322
// uc_nation = 3 ;
7936: LD_ADDR_OWVAR 21
7940: PUSH
7941: LD_INT 3
7943: ST_TO_ADDR
// uc_side = cpu1 ;
7944: LD_ADDR_OWVAR 20
7948: PUSH
7949: LD_EXP 60
7953: ST_TO_ADDR
// bc_level = DifficultyC ;
7954: LD_ADDR_OWVAR 43
7958: PUSH
7959: LD_EXP 22
7963: ST_TO_ADDR
// bc_type = 1 ;
7964: LD_ADDR_OWVAR 42
7968: PUSH
7969: LD_INT 1
7971: ST_TO_ADDR
// rudepo1 = CreateAndPlaceBuildingXYD ( 121 , 104 , 5 ) ;
7972: LD_ADDR_EXP 49
7976: PUSH
7977: LD_INT 121
7979: PPUSH
7980: LD_INT 104
7982: PPUSH
7983: LD_INT 5
7985: PPUSH
7986: CALL_OW 47
7990: ST_TO_ADDR
// rudepo2 = CreateAndPlaceBuildingXYD ( 82 , 105 , 0 ) ;
7991: LD_ADDR_EXP 53
7995: PUSH
7996: LD_INT 82
7998: PPUSH
7999: LD_INT 105
8001: PPUSH
8002: LD_INT 0
8004: PPUSH
8005: CALL_OW 47
8009: ST_TO_ADDR
// SetResourceType ( GetBase ( rudepo1 ) , mat_cans , 20000 [ mat_cans ] ) ;
8010: LD_EXP 49
8014: PPUSH
8015: CALL_OW 274
8019: PPUSH
8020: LD_INT 1
8022: PPUSH
8023: LD_INT 20000
8025: PUSH
8026: LD_INT 1
8028: ARRAY
8029: PPUSH
8030: CALL_OW 277
// SetResourceType ( GetBase ( rudepo1 ) , 2 , 5000 ) ;
8034: LD_EXP 49
8038: PPUSH
8039: CALL_OW 274
8043: PPUSH
8044: LD_INT 2
8046: PPUSH
8047: LD_INT 5000
8049: PPUSH
8050: CALL_OW 277
// SetResourceType ( GetBase ( rudepo1 ) , 3 , 5000 ) ;
8054: LD_EXP 49
8058: PPUSH
8059: CALL_OW 274
8063: PPUSH
8064: LD_INT 3
8066: PPUSH
8067: LD_INT 5000
8069: PPUSH
8070: CALL_OW 277
// SetResourceType ( GetBase ( rudepo2 ) , mat_cans , 20000 [ mat_cans ] ) ;
8074: LD_EXP 53
8078: PPUSH
8079: CALL_OW 274
8083: PPUSH
8084: LD_INT 1
8086: PPUSH
8087: LD_INT 20000
8089: PUSH
8090: LD_INT 1
8092: ARRAY
8093: PPUSH
8094: CALL_OW 277
// SetResourceType ( GetBase ( rudepo2 ) , 2 , 5000 ) ;
8098: LD_EXP 53
8102: PPUSH
8103: CALL_OW 274
8107: PPUSH
8108: LD_INT 2
8110: PPUSH
8111: LD_INT 5000
8113: PPUSH
8114: CALL_OW 277
// SetResourceType ( GetBase ( rudepo2 ) , 3 , 5000 ) ;
8118: LD_EXP 53
8122: PPUSH
8123: CALL_OW 274
8127: PPUSH
8128: LD_INT 3
8130: PPUSH
8131: LD_INT 5000
8133: PPUSH
8134: CALL_OW 277
// bc_type = 5 ;
8138: LD_ADDR_OWVAR 42
8142: PUSH
8143: LD_INT 5
8145: ST_TO_ADDR
// ruarmoury1 = CreateAndPlaceBuildingXYD ( 74 , 90 , 3 ) ;
8146: LD_ADDR_EXP 52
8150: PUSH
8151: LD_INT 74
8153: PPUSH
8154: LD_INT 90
8156: PPUSH
8157: LD_INT 3
8159: PPUSH
8160: CALL_OW 47
8164: ST_TO_ADDR
// ruarmoury2 = CreateAndPlaceBuildingXYD ( 119 , 90 , 3 ) ;
8165: LD_ADDR_EXP 56
8169: PUSH
8170: LD_INT 119
8172: PPUSH
8173: LD_INT 90
8175: PPUSH
8176: LD_INT 3
8178: PPUSH
8179: CALL_OW 47
8183: ST_TO_ADDR
// bc_type = 32 ;
8184: LD_ADDR_OWVAR 42
8188: PUSH
8189: LD_INT 32
8191: ST_TO_ADDR
// CreateAndPlaceBuildingXYD ( 135 , 113 , 4 ) ;
8192: LD_INT 135
8194: PPUSH
8195: LD_INT 113
8197: PPUSH
8198: LD_INT 4
8200: PPUSH
8201: CALL_OW 47
// CreateAndPlaceBuildingXYD ( 131 , 101 , 4 ) ;
8205: LD_INT 131
8207: PPUSH
8208: LD_INT 101
8210: PPUSH
8211: LD_INT 4
8213: PPUSH
8214: CALL_OW 47
// CreateAndPlaceBuildingXYD ( 123 , 92 , 3 ) ;
8218: LD_INT 123
8220: PPUSH
8221: LD_INT 92
8223: PPUSH
8224: LD_INT 3
8226: PPUSH
8227: CALL_OW 47
// CreateAndPlaceBuildingXYD ( 114 , 89 , 2 ) ;
8231: LD_INT 114
8233: PPUSH
8234: LD_INT 89
8236: PPUSH
8237: LD_INT 2
8239: PPUSH
8240: CALL_OW 47
// CreateAndPlaceBuildingXYD ( 104 , 89 , 2 ) ;
8244: LD_INT 104
8246: PPUSH
8247: LD_INT 89
8249: PPUSH
8250: LD_INT 2
8252: PPUSH
8253: CALL_OW 47
// CreateAndPlaceBuildingXYD ( 101 , 89 , 3 ) ;
8257: LD_INT 101
8259: PPUSH
8260: LD_INT 89
8262: PPUSH
8263: LD_INT 3
8265: PPUSH
8266: CALL_OW 47
// CreateAndPlaceBuildingXYD ( 90 , 89 , 2 ) ;
8270: LD_INT 90
8272: PPUSH
8273: LD_INT 89
8275: PPUSH
8276: LD_INT 2
8278: PPUSH
8279: CALL_OW 47
// CreateAndPlaceBuildingXYD ( 88 , 90 , 3 ) ;
8283: LD_INT 88
8285: PPUSH
8286: LD_INT 90
8288: PPUSH
8289: LD_INT 3
8291: PPUSH
8292: CALL_OW 47
// CreateAndPlaceBuildingXYD ( 78 , 92 , 3 ) ;
8296: LD_INT 78
8298: PPUSH
8299: LD_INT 92
8301: PPUSH
8302: LD_INT 3
8304: PPUSH
8305: CALL_OW 47
// CreateAndPlaceBuildingXYD ( 81 , 93 , 3 ) ;
8309: LD_INT 81
8311: PPUSH
8312: LD_INT 93
8314: PPUSH
8315: LD_INT 3
8317: PPUSH
8318: CALL_OW 47
// CreateAndPlaceBuildingXYD ( 64 , 92 , 2 ) ;
8322: LD_INT 64
8324: PPUSH
8325: LD_INT 92
8327: PPUSH
8328: LD_INT 2
8330: PPUSH
8331: CALL_OW 47
// CreateAndPlaceBuildingXYD ( 63 , 94 , 2 ) ;
8335: LD_INT 63
8337: PPUSH
8338: LD_INT 94
8340: PPUSH
8341: LD_INT 2
8343: PPUSH
8344: CALL_OW 47
// CreateAndPlaceBuildingXYD ( 67 , 106 , 1 ) ;
8348: LD_INT 67
8350: PPUSH
8351: LD_INT 106
8353: PPUSH
8354: LD_INT 1
8356: PPUSH
8357: CALL_OW 47
// CreateAndPlaceBuildingXYD ( 67 , 109 , 1 ) ;
8361: LD_INT 67
8363: PPUSH
8364: LD_INT 109
8366: PPUSH
8367: LD_INT 1
8369: PPUSH
8370: CALL_OW 47
// bc_type = b_lab ;
8374: LD_ADDR_OWVAR 42
8378: PUSH
8379: LD_INT 6
8381: ST_TO_ADDR
// bc_kind1 = b_lab_weapon ;
8382: LD_ADDR_OWVAR 44
8386: PUSH
8387: LD_INT 10
8389: ST_TO_ADDR
// bc_kind2 = b_lab_computer ;
8390: LD_ADDR_OWVAR 45
8394: PUSH
8395: LD_INT 12
8397: ST_TO_ADDR
// rulab1 = CreateAndPlaceBuildingXYD ( 108 , 111 , 5 ) ;
8398: LD_ADDR_EXP 50
8402: PUSH
8403: LD_INT 108
8405: PPUSH
8406: LD_INT 111
8408: PPUSH
8409: LD_INT 5
8411: PPUSH
8412: CALL_OW 47
8416: ST_TO_ADDR
// bc_type = b_lab ;
8417: LD_ADDR_OWVAR 42
8421: PUSH
8422: LD_INT 6
8424: ST_TO_ADDR
// bc_kind1 = b_lab_spacetime ;
8425: LD_ADDR_OWVAR 44
8429: PUSH
8430: LD_INT 14
8432: ST_TO_ADDR
// bc_kind2 = b_lab_siberium ;
8433: LD_ADDR_OWVAR 45
8437: PUSH
8438: LD_INT 11
8440: ST_TO_ADDR
// rulab2 = CreateAndPlaceBuildingXYD ( 102 , 113 , 0 ) ;
8441: LD_ADDR_EXP 54
8445: PUSH
8446: LD_INT 102
8448: PPUSH
8449: LD_INT 113
8451: PPUSH
8452: LD_INT 0
8454: PPUSH
8455: CALL_OW 47
8459: ST_TO_ADDR
// bc_type = 3 ;
8460: LD_ADDR_OWVAR 42
8464: PUSH
8465: LD_INT 3
8467: ST_TO_ADDR
// rufab1 = CreateAndPlaceBuildingXYD ( 92 , 108 , 0 ) ;
8468: LD_ADDR_EXP 51
8472: PUSH
8473: LD_INT 92
8475: PPUSH
8476: LD_INT 108
8478: PPUSH
8479: LD_INT 0
8481: PPUSH
8482: CALL_OW 47
8486: ST_TO_ADDR
// bc_type = 3 ;
8487: LD_ADDR_OWVAR 42
8491: PUSH
8492: LD_INT 3
8494: ST_TO_ADDR
// rufab2 = CreateAndPlaceBuildingXYD ( 115 , 108 , 5 ) ;
8495: LD_ADDR_EXP 55
8499: PUSH
8500: LD_INT 115
8502: PPUSH
8503: LD_INT 108
8505: PPUSH
8506: LD_INT 5
8508: PPUSH
8509: CALL_OW 47
8513: ST_TO_ADDR
// bc_type = 16 ;
8514: LD_ADDR_OWVAR 42
8518: PUSH
8519: LD_INT 16
8521: ST_TO_ADDR
// CreateAndPlaceBuildingXYD ( 88 , 104 , 2 ) ;
8522: LD_INT 88
8524: PPUSH
8525: LD_INT 104
8527: PPUSH
8528: LD_INT 2
8530: PPUSH
8531: CALL_OW 47
// bc_type = 17 ;
8535: LD_ADDR_OWVAR 42
8539: PUSH
8540: LD_INT 17
8542: ST_TO_ADDR
// CreateAndPlaceBuildingXYD ( 89 , 108 , 1 ) ;
8543: LD_INT 89
8545: PPUSH
8546: LD_INT 108
8548: PPUSH
8549: LD_INT 1
8551: PPUSH
8552: CALL_OW 47
// bc_type = 18 ;
8556: LD_ADDR_OWVAR 42
8560: PUSH
8561: LD_INT 18
8563: ST_TO_ADDR
// CreateAndPlaceBuildingXYD ( 92 , 112 , 0 ) ;
8564: LD_INT 92
8566: PPUSH
8567: LD_INT 112
8569: PPUSH
8570: LD_INT 0
8572: PPUSH
8573: CALL_OW 47
// bc_type = 21 ;
8577: LD_ADDR_OWVAR 42
8581: PUSH
8582: LD_INT 21
8584: ST_TO_ADDR
// CreateAndPlaceBuildingXYD ( 95 , 111 , 5 ) ;
8585: LD_INT 95
8587: PPUSH
8588: LD_INT 111
8590: PPUSH
8591: LD_INT 5
8593: PPUSH
8594: CALL_OW 47
// bc_type = 24 ;
8598: LD_ADDR_OWVAR 42
8602: PUSH
8603: LD_INT 24
8605: ST_TO_ADDR
// CreateAndPlaceBuildingXYD ( 96 , 108 , 4 ) ;
8606: LD_INT 96
8608: PPUSH
8609: LD_INT 108
8611: PPUSH
8612: LD_INT 4
8614: PPUSH
8615: CALL_OW 47
// bc_type = 16 ;
8619: LD_ADDR_OWVAR 42
8623: PUSH
8624: LD_INT 16
8626: ST_TO_ADDR
// CreateAndPlaceBuildingXYD ( 111 , 108 , 1 ) ;
8627: LD_INT 111
8629: PPUSH
8630: LD_INT 108
8632: PPUSH
8633: LD_INT 1
8635: PPUSH
8636: CALL_OW 47
// bc_type = 17 ;
8640: LD_ADDR_OWVAR 42
8644: PUSH
8645: LD_INT 17
8647: ST_TO_ADDR
// CreateAndPlaceBuildingXYD ( 115 , 104 , 3 ) ;
8648: LD_INT 115
8650: PPUSH
8651: LD_INT 104
8653: PPUSH
8654: LD_INT 3
8656: PPUSH
8657: CALL_OW 47
// bc_type = 18 ;
8661: LD_ADDR_OWVAR 42
8665: PUSH
8666: LD_INT 18
8668: ST_TO_ADDR
// CreateAndPlaceBuildingXYD ( 118 , 108 , 4 ) ;
8669: LD_INT 118
8671: PPUSH
8672: LD_INT 108
8674: PPUSH
8675: LD_INT 4
8677: PPUSH
8678: CALL_OW 47
// bc_type = 21 ;
8682: LD_ADDR_OWVAR 42
8686: PUSH
8687: LD_INT 21
8689: ST_TO_ADDR
// CreateAndPlaceBuildingXYD ( 119 , 112 , 5 ) ;
8690: LD_INT 119
8692: PPUSH
8693: LD_INT 112
8695: PPUSH
8696: LD_INT 5
8698: PPUSH
8699: CALL_OW 47
// bc_type = 24 ;
8703: LD_ADDR_OWVAR 42
8707: PUSH
8708: LD_INT 24
8710: ST_TO_ADDR
// CreateAndPlaceBuildingXYD ( 115 , 111 , 0 ) ;
8711: LD_INT 115
8713: PPUSH
8714: LD_INT 111
8716: PPUSH
8717: LD_INT 0
8719: PPUSH
8720: CALL_OW 47
// bc_type = 28 ;
8724: LD_ADDR_OWVAR 42
8728: PUSH
8729: LD_INT 28
8731: ST_TO_ADDR
// CreateAndPlaceBuildingXYD ( 78 , 111 , 0 ) ;
8732: LD_INT 78
8734: PPUSH
8735: LD_INT 111
8737: PPUSH
8738: LD_INT 0
8740: PPUSH
8741: CALL_OW 47
// CreateAndPlaceBuildingXYD ( 79 , 114 , 0 ) ;
8745: LD_INT 79
8747: PPUSH
8748: LD_INT 114
8750: PPUSH
8751: LD_INT 0
8753: PPUSH
8754: CALL_OW 47
// CreateAndPlaceBuildingXYD ( 78 , 116 , 0 ) ;
8758: LD_INT 78
8760: PPUSH
8761: LD_INT 116
8763: PPUSH
8764: LD_INT 0
8766: PPUSH
8767: CALL_OW 47
// CreateAndPlaceBuildingXYD ( 121 , 108 , 0 ) ;
8771: LD_INT 121
8773: PPUSH
8774: LD_INT 108
8776: PPUSH
8777: LD_INT 0
8779: PPUSH
8780: CALL_OW 47
// CreateAndPlaceBuildingXYD ( 122 , 112 , 0 ) ;
8784: LD_INT 122
8786: PPUSH
8787: LD_INT 112
8789: PPUSH
8790: LD_INT 0
8792: PPUSH
8793: CALL_OW 47
// CreateAndPlaceBuildingXYD ( 124 , 111 , 0 ) ;
8797: LD_INT 124
8799: PPUSH
8800: LD_INT 111
8802: PPUSH
8803: LD_INT 0
8805: PPUSH
8806: CALL_OW 47
// SetResourceVisibility ( 126 , 110 , cpu1 ) ;
8810: LD_INT 126
8812: PPUSH
8813: LD_INT 110
8815: PPUSH
8816: LD_EXP 60
8820: PPUSH
8821: CALL_OW 441
// SetResourceVisibility ( 134 , 103 , cpu1 ) ;
8825: LD_INT 134
8827: PPUSH
8828: LD_INT 103
8830: PPUSH
8831: LD_EXP 60
8835: PPUSH
8836: CALL_OW 441
// bc_type = 29 ;
8840: LD_ADDR_OWVAR 42
8844: PUSH
8845: LD_INT 29
8847: ST_TO_ADDR
// CreateAndPlaceBuildingXYD ( 126 , 110 , 4 ) ;
8848: LD_INT 126
8850: PPUSH
8851: LD_INT 110
8853: PPUSH
8854: LD_INT 4
8856: PPUSH
8857: CALL_OW 47
// CreateAndPlaceBuildingXYD ( 135 , 103 , 2 ) ;
8861: LD_INT 135
8863: PPUSH
8864: LD_INT 103
8866: PPUSH
8867: LD_INT 2
8869: PPUSH
8870: CALL_OW 47
// SetResourceVisibility ( 74 , 105 , cpu1 ) ;
8874: LD_INT 74
8876: PPUSH
8877: LD_INT 105
8879: PPUSH
8880: LD_EXP 60
8884: PPUSH
8885: CALL_OW 441
// bc_type = 30 ;
8889: LD_ADDR_OWVAR 42
8893: PUSH
8894: LD_INT 30
8896: ST_TO_ADDR
// CreateAndPlaceBuildingXYD ( 74 , 105 , 0 ) ;
8897: LD_INT 74
8899: PPUSH
8900: LD_INT 105
8902: PPUSH
8903: LD_INT 0
8905: PPUSH
8906: CALL_OW 47
// weapon = [ 44 , 46 , 43 , 45 ] ;
8910: LD_ADDR_VAR 0 2
8914: PUSH
8915: LD_INT 44
8917: PUSH
8918: LD_INT 46
8920: PUSH
8921: LD_INT 43
8923: PUSH
8924: LD_INT 45
8926: PUSH
8927: EMPTY
8928: LIST
8929: LIST
8930: LIST
8931: LIST
8932: ST_TO_ADDR
// RU_Turret := FilterAllUnits ( [ [ f_side , cpu1 ] , [ f_btype , b_bunker ] ] ) ;
8933: LD_ADDR_VAR 0 3
8937: PUSH
8938: LD_INT 22
8940: PUSH
8941: LD_EXP 60
8945: PUSH
8946: EMPTY
8947: LIST
8948: LIST
8949: PUSH
8950: LD_INT 30
8952: PUSH
8953: LD_INT 32
8955: PUSH
8956: EMPTY
8957: LIST
8958: LIST
8959: PUSH
8960: EMPTY
8961: LIST
8962: LIST
8963: PPUSH
8964: CALL_OW 69
8968: ST_TO_ADDR
// for i in RU_turret do
8969: LD_ADDR_VAR 0 4
8973: PUSH
8974: LD_VAR 0 3
8978: PUSH
8979: FOR_IN
8980: IFFALSE 9010
// begin PlaceWeaponTurret ( i , weapon [ Rand ( 1 , 4 ) ] ) ;
8982: LD_VAR 0 4
8986: PPUSH
8987: LD_VAR 0 2
8991: PUSH
8992: LD_INT 1
8994: PPUSH
8995: LD_INT 4
8997: PPUSH
8998: CALL_OW 12
9002: ARRAY
9003: PPUSH
9004: CALL_OW 431
// end ;
9008: GO 8979
9010: POP
9011: POP
// end ;
9012: LD_VAR 0 1
9016: RET
// export function PrepareRussianPeople ; var RU_turret , i , level , un , l ; begin
9017: LD_INT 0
9019: PPUSH
9020: PPUSH
9021: PPUSH
9022: PPUSH
9023: PPUSH
9024: PPUSH
// RU_Turret := FilterAllUnits ( [ [ f_side , cpu1 ] , [ f_btype , b_bunker ] ] ) ;
9025: LD_ADDR_VAR 0 2
9029: PUSH
9030: LD_INT 22
9032: PUSH
9033: LD_EXP 60
9037: PUSH
9038: EMPTY
9039: LIST
9040: LIST
9041: PUSH
9042: LD_INT 30
9044: PUSH
9045: LD_INT 32
9047: PUSH
9048: EMPTY
9049: LIST
9050: LIST
9051: PUSH
9052: EMPTY
9053: LIST
9054: LIST
9055: PPUSH
9056: CALL_OW 69
9060: ST_TO_ADDR
// uc_side = cpu1 ;
9061: LD_ADDR_OWVAR 20
9065: PUSH
9066: LD_EXP 60
9070: ST_TO_ADDR
// uc_nation = 3 ;
9071: LD_ADDR_OWVAR 21
9075: PUSH
9076: LD_INT 3
9078: ST_TO_ADDR
// Level = difficultyC ;
9079: LD_ADDR_VAR 0 4
9083: PUSH
9084: LD_EXP 22
9088: ST_TO_ADDR
// hc_gallery =  ;
9089: LD_ADDR_OWVAR 33
9093: PUSH
9094: LD_STRING 
9096: ST_TO_ADDR
// hc_name =  ;
9097: LD_ADDR_OWVAR 26
9101: PUSH
9102: LD_STRING 
9104: ST_TO_ADDR
// for i in RU_Turret do
9105: LD_ADDR_VAR 0 3
9109: PUSH
9110: LD_VAR 0 2
9114: PUSH
9115: FOR_IN
9116: IFFALSE 9245
// begin if IsInUnit ( i ) = 0 then
9118: LD_VAR 0 3
9122: PPUSH
9123: CALL_OW 310
9127: PUSH
9128: LD_INT 0
9130: EQUAL
9131: IFFALSE 9243
// begin hc_attr = [ Rand ( 9 , 11 ) , Rand ( 10 , 12 ) ] ;
9133: LD_ADDR_OWVAR 29
9137: PUSH
9138: LD_INT 9
9140: PPUSH
9141: LD_INT 11
9143: PPUSH
9144: CALL_OW 12
9148: PUSH
9149: LD_INT 10
9151: PPUSH
9152: LD_INT 12
9154: PPUSH
9155: CALL_OW 12
9159: PUSH
9160: EMPTY
9161: LIST
9162: LIST
9163: ST_TO_ADDR
// hc_skills = [ Level , Level , Level , Level ] ;
9164: LD_ADDR_OWVAR 31
9168: PUSH
9169: LD_VAR 0 4
9173: PUSH
9174: LD_VAR 0 4
9178: PUSH
9179: LD_VAR 0 4
9183: PUSH
9184: LD_VAR 0 4
9188: PUSH
9189: EMPTY
9190: LIST
9191: LIST
9192: LIST
9193: LIST
9194: ST_TO_ADDR
// hc_sex = Rand ( sex_male , sex_female ) ;
9195: LD_ADDR_OWVAR 27
9199: PUSH
9200: LD_INT 1
9202: PPUSH
9203: LD_INT 2
9205: PPUSH
9206: CALL_OW 12
9210: ST_TO_ADDR
// hc_class = 1 ;
9211: LD_ADDR_OWVAR 28
9215: PUSH
9216: LD_INT 1
9218: ST_TO_ADDR
// un := CreateHuman ;
9219: LD_ADDR_VAR 0 5
9223: PUSH
9224: CALL_OW 44
9228: ST_TO_ADDR
// PlaceHumanInUnit ( un , i ) ;
9229: LD_VAR 0 5
9233: PPUSH
9234: LD_VAR 0 3
9238: PPUSH
9239: CALL_OW 52
// end ; end ;
9243: GO 9115
9245: POP
9246: POP
// for i in rudepo1 do
9247: LD_ADDR_VAR 0 3
9251: PUSH
9252: LD_EXP 49
9256: PUSH
9257: FOR_IN
9258: IFFALSE 9435
// begin l = 0 ;
9260: LD_ADDR_VAR 0 6
9264: PUSH
9265: LD_INT 0
9267: ST_TO_ADDR
// if IsInUnit ( i ) = 0 then
9268: LD_VAR 0 3
9272: PPUSH
9273: CALL_OW 310
9277: PUSH
9278: LD_INT 0
9280: EQUAL
9281: IFFALSE 9433
// begin repeat begin hc_gallery =  ;
9283: LD_ADDR_OWVAR 33
9287: PUSH
9288: LD_STRING 
9290: ST_TO_ADDR
// hc_name =  ;
9291: LD_ADDR_OWVAR 26
9295: PUSH
9296: LD_STRING 
9298: ST_TO_ADDR
// hc_attr = [ Rand ( 9 , 11 ) , Rand ( 10 , 12 ) ] ;
9299: LD_ADDR_OWVAR 29
9303: PUSH
9304: LD_INT 9
9306: PPUSH
9307: LD_INT 11
9309: PPUSH
9310: CALL_OW 12
9314: PUSH
9315: LD_INT 10
9317: PPUSH
9318: LD_INT 12
9320: PPUSH
9321: CALL_OW 12
9325: PUSH
9326: EMPTY
9327: LIST
9328: LIST
9329: ST_TO_ADDR
// hc_skills = [ Level , Level , Level , Level ] ;
9330: LD_ADDR_OWVAR 31
9334: PUSH
9335: LD_VAR 0 4
9339: PUSH
9340: LD_VAR 0 4
9344: PUSH
9345: LD_VAR 0 4
9349: PUSH
9350: LD_VAR 0 4
9354: PUSH
9355: EMPTY
9356: LIST
9357: LIST
9358: LIST
9359: LIST
9360: ST_TO_ADDR
// hc_sex = Rand ( sex_male , sex_female ) ;
9361: LD_ADDR_OWVAR 27
9365: PUSH
9366: LD_INT 1
9368: PPUSH
9369: LD_INT 2
9371: PPUSH
9372: CALL_OW 12
9376: ST_TO_ADDR
// hc_class = 2 ;
9377: LD_ADDR_OWVAR 28
9381: PUSH
9382: LD_INT 2
9384: ST_TO_ADDR
// un = CreateHuman ;
9385: LD_ADDR_VAR 0 5
9389: PUSH
9390: CALL_OW 44
9394: ST_TO_ADDR
// PlaceHumanInUnit ( un , rudepo1 ) ;
9395: LD_VAR 0 5
9399: PPUSH
9400: LD_EXP 49
9404: PPUSH
9405: CALL_OW 52
// l = l + 1 ;
9409: LD_ADDR_VAR 0 6
9413: PUSH
9414: LD_VAR 0 6
9418: PUSH
9419: LD_INT 1
9421: PLUS
9422: ST_TO_ADDR
// end until l = 4 ;
9423: LD_VAR 0 6
9427: PUSH
9428: LD_INT 4
9430: EQUAL
9431: IFFALSE 9283
// end ; end ;
9433: GO 9257
9435: POP
9436: POP
// for i in rudepo2 do
9437: LD_ADDR_VAR 0 3
9441: PUSH
9442: LD_EXP 53
9446: PUSH
9447: FOR_IN
9448: IFFALSE 9625
// begin l = 0 ;
9450: LD_ADDR_VAR 0 6
9454: PUSH
9455: LD_INT 0
9457: ST_TO_ADDR
// if IsInUnit ( i ) = 0 then
9458: LD_VAR 0 3
9462: PPUSH
9463: CALL_OW 310
9467: PUSH
9468: LD_INT 0
9470: EQUAL
9471: IFFALSE 9623
// begin repeat begin hc_gallery =  ;
9473: LD_ADDR_OWVAR 33
9477: PUSH
9478: LD_STRING 
9480: ST_TO_ADDR
// hc_name =  ;
9481: LD_ADDR_OWVAR 26
9485: PUSH
9486: LD_STRING 
9488: ST_TO_ADDR
// hc_attr = [ Rand ( 9 , 11 ) , Rand ( 10 , 12 ) ] ;
9489: LD_ADDR_OWVAR 29
9493: PUSH
9494: LD_INT 9
9496: PPUSH
9497: LD_INT 11
9499: PPUSH
9500: CALL_OW 12
9504: PUSH
9505: LD_INT 10
9507: PPUSH
9508: LD_INT 12
9510: PPUSH
9511: CALL_OW 12
9515: PUSH
9516: EMPTY
9517: LIST
9518: LIST
9519: ST_TO_ADDR
// hc_skills = [ Level , Level , Level , Level ] ;
9520: LD_ADDR_OWVAR 31
9524: PUSH
9525: LD_VAR 0 4
9529: PUSH
9530: LD_VAR 0 4
9534: PUSH
9535: LD_VAR 0 4
9539: PUSH
9540: LD_VAR 0 4
9544: PUSH
9545: EMPTY
9546: LIST
9547: LIST
9548: LIST
9549: LIST
9550: ST_TO_ADDR
// hc_sex = Rand ( sex_male , sex_female ) ;
9551: LD_ADDR_OWVAR 27
9555: PUSH
9556: LD_INT 1
9558: PPUSH
9559: LD_INT 2
9561: PPUSH
9562: CALL_OW 12
9566: ST_TO_ADDR
// hc_class = 2 ;
9567: LD_ADDR_OWVAR 28
9571: PUSH
9572: LD_INT 2
9574: ST_TO_ADDR
// un = CreateHuman ;
9575: LD_ADDR_VAR 0 5
9579: PUSH
9580: CALL_OW 44
9584: ST_TO_ADDR
// PlaceHumanInUnit ( un , rudepo2 ) ;
9585: LD_VAR 0 5
9589: PPUSH
9590: LD_EXP 53
9594: PPUSH
9595: CALL_OW 52
// l = l + 1 ;
9599: LD_ADDR_VAR 0 6
9603: PUSH
9604: LD_VAR 0 6
9608: PUSH
9609: LD_INT 1
9611: PLUS
9612: ST_TO_ADDR
// end until l = 4 ;
9613: LD_VAR 0 6
9617: PUSH
9618: LD_INT 4
9620: EQUAL
9621: IFFALSE 9473
// end ; end ;
9623: GO 9447
9625: POP
9626: POP
// for i in ruarmoury1 do
9627: LD_ADDR_VAR 0 3
9631: PUSH
9632: LD_EXP 52
9636: PUSH
9637: FOR_IN
9638: IFFALSE 9815
// begin l = 0 ;
9640: LD_ADDR_VAR 0 6
9644: PUSH
9645: LD_INT 0
9647: ST_TO_ADDR
// if IsInUnit ( i ) = 0 then
9648: LD_VAR 0 3
9652: PPUSH
9653: CALL_OW 310
9657: PUSH
9658: LD_INT 0
9660: EQUAL
9661: IFFALSE 9813
// begin repeat begin hc_gallery =  ;
9663: LD_ADDR_OWVAR 33
9667: PUSH
9668: LD_STRING 
9670: ST_TO_ADDR
// hc_name =  ;
9671: LD_ADDR_OWVAR 26
9675: PUSH
9676: LD_STRING 
9678: ST_TO_ADDR
// hc_attr = [ Rand ( 9 , 11 ) , Rand ( 10 , 12 ) ] ;
9679: LD_ADDR_OWVAR 29
9683: PUSH
9684: LD_INT 9
9686: PPUSH
9687: LD_INT 11
9689: PPUSH
9690: CALL_OW 12
9694: PUSH
9695: LD_INT 10
9697: PPUSH
9698: LD_INT 12
9700: PPUSH
9701: CALL_OW 12
9705: PUSH
9706: EMPTY
9707: LIST
9708: LIST
9709: ST_TO_ADDR
// hc_skills = [ Level , Level , Level , Level ] ;
9710: LD_ADDR_OWVAR 31
9714: PUSH
9715: LD_VAR 0 4
9719: PUSH
9720: LD_VAR 0 4
9724: PUSH
9725: LD_VAR 0 4
9729: PUSH
9730: LD_VAR 0 4
9734: PUSH
9735: EMPTY
9736: LIST
9737: LIST
9738: LIST
9739: LIST
9740: ST_TO_ADDR
// hc_sex = Rand ( sex_male , sex_female ) ;
9741: LD_ADDR_OWVAR 27
9745: PUSH
9746: LD_INT 1
9748: PPUSH
9749: LD_INT 2
9751: PPUSH
9752: CALL_OW 12
9756: ST_TO_ADDR
// hc_class = 9 ;
9757: LD_ADDR_OWVAR 28
9761: PUSH
9762: LD_INT 9
9764: ST_TO_ADDR
// un = CreateHuman ;
9765: LD_ADDR_VAR 0 5
9769: PUSH
9770: CALL_OW 44
9774: ST_TO_ADDR
// PlaceHumanInUnit ( un , ruarmoury1 ) ;
9775: LD_VAR 0 5
9779: PPUSH
9780: LD_EXP 52
9784: PPUSH
9785: CALL_OW 52
// l = l + 1 ;
9789: LD_ADDR_VAR 0 6
9793: PUSH
9794: LD_VAR 0 6
9798: PUSH
9799: LD_INT 1
9801: PLUS
9802: ST_TO_ADDR
// end until l = 2 ;
9803: LD_VAR 0 6
9807: PUSH
9808: LD_INT 2
9810: EQUAL
9811: IFFALSE 9663
// end ; end ;
9813: GO 9637
9815: POP
9816: POP
// for i in ruarmoury2 do
9817: LD_ADDR_VAR 0 3
9821: PUSH
9822: LD_EXP 56
9826: PUSH
9827: FOR_IN
9828: IFFALSE 10005
// begin l = 0 ;
9830: LD_ADDR_VAR 0 6
9834: PUSH
9835: LD_INT 0
9837: ST_TO_ADDR
// if IsInUnit ( i ) = 0 then
9838: LD_VAR 0 3
9842: PPUSH
9843: CALL_OW 310
9847: PUSH
9848: LD_INT 0
9850: EQUAL
9851: IFFALSE 10003
// begin repeat begin hc_gallery =  ;
9853: LD_ADDR_OWVAR 33
9857: PUSH
9858: LD_STRING 
9860: ST_TO_ADDR
// hc_name =  ;
9861: LD_ADDR_OWVAR 26
9865: PUSH
9866: LD_STRING 
9868: ST_TO_ADDR
// hc_attr = [ Rand ( 9 , 11 ) , Rand ( 10 , 12 ) ] ;
9869: LD_ADDR_OWVAR 29
9873: PUSH
9874: LD_INT 9
9876: PPUSH
9877: LD_INT 11
9879: PPUSH
9880: CALL_OW 12
9884: PUSH
9885: LD_INT 10
9887: PPUSH
9888: LD_INT 12
9890: PPUSH
9891: CALL_OW 12
9895: PUSH
9896: EMPTY
9897: LIST
9898: LIST
9899: ST_TO_ADDR
// hc_skills = [ Level , Level , Level , Level ] ;
9900: LD_ADDR_OWVAR 31
9904: PUSH
9905: LD_VAR 0 4
9909: PUSH
9910: LD_VAR 0 4
9914: PUSH
9915: LD_VAR 0 4
9919: PUSH
9920: LD_VAR 0 4
9924: PUSH
9925: EMPTY
9926: LIST
9927: LIST
9928: LIST
9929: LIST
9930: ST_TO_ADDR
// hc_sex = Rand ( sex_male , sex_female ) ;
9931: LD_ADDR_OWVAR 27
9935: PUSH
9936: LD_INT 1
9938: PPUSH
9939: LD_INT 2
9941: PPUSH
9942: CALL_OW 12
9946: ST_TO_ADDR
// hc_class = 9 ;
9947: LD_ADDR_OWVAR 28
9951: PUSH
9952: LD_INT 9
9954: ST_TO_ADDR
// un = CreateHuman ;
9955: LD_ADDR_VAR 0 5
9959: PUSH
9960: CALL_OW 44
9964: ST_TO_ADDR
// PlaceHumanInUnit ( un , ruarmoury2 ) ;
9965: LD_VAR 0 5
9969: PPUSH
9970: LD_EXP 56
9974: PPUSH
9975: CALL_OW 52
// l = l + 1 ;
9979: LD_ADDR_VAR 0 6
9983: PUSH
9984: LD_VAR 0 6
9988: PUSH
9989: LD_INT 1
9991: PLUS
9992: ST_TO_ADDR
// end until l = 2 ;
9993: LD_VAR 0 6
9997: PUSH
9998: LD_INT 2
10000: EQUAL
10001: IFFALSE 9853
// end ; end ;
10003: GO 9827
10005: POP
10006: POP
// for i in rufab1 do
10007: LD_ADDR_VAR 0 3
10011: PUSH
10012: LD_EXP 51
10016: PUSH
10017: FOR_IN
10018: IFFALSE 10195
// begin l = 0 ;
10020: LD_ADDR_VAR 0 6
10024: PUSH
10025: LD_INT 0
10027: ST_TO_ADDR
// if IsInUnit ( i ) = 0 then
10028: LD_VAR 0 3
10032: PPUSH
10033: CALL_OW 310
10037: PUSH
10038: LD_INT 0
10040: EQUAL
10041: IFFALSE 10193
// begin repeat begin hc_gallery =  ;
10043: LD_ADDR_OWVAR 33
10047: PUSH
10048: LD_STRING 
10050: ST_TO_ADDR
// hc_name =  ;
10051: LD_ADDR_OWVAR 26
10055: PUSH
10056: LD_STRING 
10058: ST_TO_ADDR
// hc_attr = [ Rand ( 9 , 11 ) , Rand ( 10 , 12 ) ] ;
10059: LD_ADDR_OWVAR 29
10063: PUSH
10064: LD_INT 9
10066: PPUSH
10067: LD_INT 11
10069: PPUSH
10070: CALL_OW 12
10074: PUSH
10075: LD_INT 10
10077: PPUSH
10078: LD_INT 12
10080: PPUSH
10081: CALL_OW 12
10085: PUSH
10086: EMPTY
10087: LIST
10088: LIST
10089: ST_TO_ADDR
// hc_skills = [ Level , Level , Level , Level ] ;
10090: LD_ADDR_OWVAR 31
10094: PUSH
10095: LD_VAR 0 4
10099: PUSH
10100: LD_VAR 0 4
10104: PUSH
10105: LD_VAR 0 4
10109: PUSH
10110: LD_VAR 0 4
10114: PUSH
10115: EMPTY
10116: LIST
10117: LIST
10118: LIST
10119: LIST
10120: ST_TO_ADDR
// hc_sex = Rand ( sex_male , sex_female ) ;
10121: LD_ADDR_OWVAR 27
10125: PUSH
10126: LD_INT 1
10128: PPUSH
10129: LD_INT 2
10131: PPUSH
10132: CALL_OW 12
10136: ST_TO_ADDR
// hc_class = 3 ;
10137: LD_ADDR_OWVAR 28
10141: PUSH
10142: LD_INT 3
10144: ST_TO_ADDR
// un = CreateHuman ;
10145: LD_ADDR_VAR 0 5
10149: PUSH
10150: CALL_OW 44
10154: ST_TO_ADDR
// PlaceHumanInUnit ( un , rufab1 ) ;
10155: LD_VAR 0 5
10159: PPUSH
10160: LD_EXP 51
10164: PPUSH
10165: CALL_OW 52
// l = l + 1 ;
10169: LD_ADDR_VAR 0 6
10173: PUSH
10174: LD_VAR 0 6
10178: PUSH
10179: LD_INT 1
10181: PLUS
10182: ST_TO_ADDR
// end until l = 6 ;
10183: LD_VAR 0 6
10187: PUSH
10188: LD_INT 6
10190: EQUAL
10191: IFFALSE 10043
// end ; end ;
10193: GO 10017
10195: POP
10196: POP
// for i in rufab2 do
10197: LD_ADDR_VAR 0 3
10201: PUSH
10202: LD_EXP 55
10206: PUSH
10207: FOR_IN
10208: IFFALSE 10385
// begin l = 0 ;
10210: LD_ADDR_VAR 0 6
10214: PUSH
10215: LD_INT 0
10217: ST_TO_ADDR
// if IsInUnit ( i ) = 0 then
10218: LD_VAR 0 3
10222: PPUSH
10223: CALL_OW 310
10227: PUSH
10228: LD_INT 0
10230: EQUAL
10231: IFFALSE 10383
// begin repeat begin hc_gallery =  ;
10233: LD_ADDR_OWVAR 33
10237: PUSH
10238: LD_STRING 
10240: ST_TO_ADDR
// hc_name =  ;
10241: LD_ADDR_OWVAR 26
10245: PUSH
10246: LD_STRING 
10248: ST_TO_ADDR
// hc_attr = [ Rand ( 9 , 11 ) , Rand ( 10 , 12 ) ] ;
10249: LD_ADDR_OWVAR 29
10253: PUSH
10254: LD_INT 9
10256: PPUSH
10257: LD_INT 11
10259: PPUSH
10260: CALL_OW 12
10264: PUSH
10265: LD_INT 10
10267: PPUSH
10268: LD_INT 12
10270: PPUSH
10271: CALL_OW 12
10275: PUSH
10276: EMPTY
10277: LIST
10278: LIST
10279: ST_TO_ADDR
// hc_skills = [ Level , Level , Level , Level ] ;
10280: LD_ADDR_OWVAR 31
10284: PUSH
10285: LD_VAR 0 4
10289: PUSH
10290: LD_VAR 0 4
10294: PUSH
10295: LD_VAR 0 4
10299: PUSH
10300: LD_VAR 0 4
10304: PUSH
10305: EMPTY
10306: LIST
10307: LIST
10308: LIST
10309: LIST
10310: ST_TO_ADDR
// hc_sex = Rand ( sex_male , sex_female ) ;
10311: LD_ADDR_OWVAR 27
10315: PUSH
10316: LD_INT 1
10318: PPUSH
10319: LD_INT 2
10321: PPUSH
10322: CALL_OW 12
10326: ST_TO_ADDR
// hc_class = 3 ;
10327: LD_ADDR_OWVAR 28
10331: PUSH
10332: LD_INT 3
10334: ST_TO_ADDR
// un = CreateHuman ;
10335: LD_ADDR_VAR 0 5
10339: PUSH
10340: CALL_OW 44
10344: ST_TO_ADDR
// PlaceHumanInUnit ( un , rufab2 ) ;
10345: LD_VAR 0 5
10349: PPUSH
10350: LD_EXP 55
10354: PPUSH
10355: CALL_OW 52
// l = l + 1 ;
10359: LD_ADDR_VAR 0 6
10363: PUSH
10364: LD_VAR 0 6
10368: PUSH
10369: LD_INT 1
10371: PLUS
10372: ST_TO_ADDR
// end until l = 6 ;
10373: LD_VAR 0 6
10377: PUSH
10378: LD_INT 6
10380: EQUAL
10381: IFFALSE 10233
// end ; end ;
10383: GO 10207
10385: POP
10386: POP
// for i in rulab1 do
10387: LD_ADDR_VAR 0 3
10391: PUSH
10392: LD_EXP 50
10396: PUSH
10397: FOR_IN
10398: IFFALSE 10575
// begin l = 0 ;
10400: LD_ADDR_VAR 0 6
10404: PUSH
10405: LD_INT 0
10407: ST_TO_ADDR
// if IsInUnit ( i ) = 0 then
10408: LD_VAR 0 3
10412: PPUSH
10413: CALL_OW 310
10417: PUSH
10418: LD_INT 0
10420: EQUAL
10421: IFFALSE 10573
// begin repeat begin hc_gallery =  ;
10423: LD_ADDR_OWVAR 33
10427: PUSH
10428: LD_STRING 
10430: ST_TO_ADDR
// hc_name =  ;
10431: LD_ADDR_OWVAR 26
10435: PUSH
10436: LD_STRING 
10438: ST_TO_ADDR
// hc_attr = [ Rand ( 9 , 11 ) , Rand ( 10 , 12 ) ] ;
10439: LD_ADDR_OWVAR 29
10443: PUSH
10444: LD_INT 9
10446: PPUSH
10447: LD_INT 11
10449: PPUSH
10450: CALL_OW 12
10454: PUSH
10455: LD_INT 10
10457: PPUSH
10458: LD_INT 12
10460: PPUSH
10461: CALL_OW 12
10465: PUSH
10466: EMPTY
10467: LIST
10468: LIST
10469: ST_TO_ADDR
// hc_skills = [ Level , Level , Level , Level ] ;
10470: LD_ADDR_OWVAR 31
10474: PUSH
10475: LD_VAR 0 4
10479: PUSH
10480: LD_VAR 0 4
10484: PUSH
10485: LD_VAR 0 4
10489: PUSH
10490: LD_VAR 0 4
10494: PUSH
10495: EMPTY
10496: LIST
10497: LIST
10498: LIST
10499: LIST
10500: ST_TO_ADDR
// hc_sex = Rand ( sex_male , sex_female ) ;
10501: LD_ADDR_OWVAR 27
10505: PUSH
10506: LD_INT 1
10508: PPUSH
10509: LD_INT 2
10511: PPUSH
10512: CALL_OW 12
10516: ST_TO_ADDR
// hc_class = 4 ;
10517: LD_ADDR_OWVAR 28
10521: PUSH
10522: LD_INT 4
10524: ST_TO_ADDR
// un = CreateHuman ;
10525: LD_ADDR_VAR 0 5
10529: PUSH
10530: CALL_OW 44
10534: ST_TO_ADDR
// PlaceHumanInUnit ( un , rulab1 ) ;
10535: LD_VAR 0 5
10539: PPUSH
10540: LD_EXP 50
10544: PPUSH
10545: CALL_OW 52
// l = l + 1 ;
10549: LD_ADDR_VAR 0 6
10553: PUSH
10554: LD_VAR 0 6
10558: PUSH
10559: LD_INT 1
10561: PLUS
10562: ST_TO_ADDR
// end until l = 4 ;
10563: LD_VAR 0 6
10567: PUSH
10568: LD_INT 4
10570: EQUAL
10571: IFFALSE 10423
// end ; end ;
10573: GO 10397
10575: POP
10576: POP
// for i in rulab2 do
10577: LD_ADDR_VAR 0 3
10581: PUSH
10582: LD_EXP 54
10586: PUSH
10587: FOR_IN
10588: IFFALSE 10765
// begin l = 0 ;
10590: LD_ADDR_VAR 0 6
10594: PUSH
10595: LD_INT 0
10597: ST_TO_ADDR
// if IsInUnit ( i ) = 0 then
10598: LD_VAR 0 3
10602: PPUSH
10603: CALL_OW 310
10607: PUSH
10608: LD_INT 0
10610: EQUAL
10611: IFFALSE 10763
// begin repeat begin hc_gallery =  ;
10613: LD_ADDR_OWVAR 33
10617: PUSH
10618: LD_STRING 
10620: ST_TO_ADDR
// hc_name =  ;
10621: LD_ADDR_OWVAR 26
10625: PUSH
10626: LD_STRING 
10628: ST_TO_ADDR
// hc_attr = [ Rand ( 9 , 11 ) , Rand ( 10 , 12 ) ] ;
10629: LD_ADDR_OWVAR 29
10633: PUSH
10634: LD_INT 9
10636: PPUSH
10637: LD_INT 11
10639: PPUSH
10640: CALL_OW 12
10644: PUSH
10645: LD_INT 10
10647: PPUSH
10648: LD_INT 12
10650: PPUSH
10651: CALL_OW 12
10655: PUSH
10656: EMPTY
10657: LIST
10658: LIST
10659: ST_TO_ADDR
// hc_skills = [ Level , Level , Level , Level ] ;
10660: LD_ADDR_OWVAR 31
10664: PUSH
10665: LD_VAR 0 4
10669: PUSH
10670: LD_VAR 0 4
10674: PUSH
10675: LD_VAR 0 4
10679: PUSH
10680: LD_VAR 0 4
10684: PUSH
10685: EMPTY
10686: LIST
10687: LIST
10688: LIST
10689: LIST
10690: ST_TO_ADDR
// hc_sex = Rand ( sex_male , sex_female ) ;
10691: LD_ADDR_OWVAR 27
10695: PUSH
10696: LD_INT 1
10698: PPUSH
10699: LD_INT 2
10701: PPUSH
10702: CALL_OW 12
10706: ST_TO_ADDR
// hc_class = 4 ;
10707: LD_ADDR_OWVAR 28
10711: PUSH
10712: LD_INT 4
10714: ST_TO_ADDR
// un = CreateHuman ;
10715: LD_ADDR_VAR 0 5
10719: PUSH
10720: CALL_OW 44
10724: ST_TO_ADDR
// PlaceHumanInUnit ( un , rulab2 ) ;
10725: LD_VAR 0 5
10729: PPUSH
10730: LD_EXP 54
10734: PPUSH
10735: CALL_OW 52
// l = l + 1 ;
10739: LD_ADDR_VAR 0 6
10743: PUSH
10744: LD_VAR 0 6
10748: PUSH
10749: LD_INT 1
10751: PLUS
10752: ST_TO_ADDR
// end until l = 4 ;
10753: LD_VAR 0 6
10757: PUSH
10758: LD_INT 4
10760: EQUAL
10761: IFFALSE 10613
// end ; end ;
10763: GO 10587
10765: POP
10766: POP
// end ; end_of_file
10767: LD_VAR 0 1
10771: RET
// every 0 0$2 do
10772: GO 10774
10774: DISABLE
// begin end ;
10775: END
// every 0 0$3 do
10776: GO 10778
10778: DISABLE
// begin if BetaAI = 1 then
10779: LD_EXP 20
10783: PUSH
10784: LD_INT 1
10786: EQUAL
10787: IFFALSE 10813
// begin SetSide ( amgeneral1 , cpu1 ) ;
10789: LD_INT 1
10791: PPUSH
10792: LD_EXP 60
10796: PPUSH
10797: CALL_OW 235
// SetSide ( amgeneral2 , cpu1 ) ;
10801: LD_INT 2
10803: PPUSH
10804: LD_EXP 60
10808: PPUSH
10809: CALL_OW 235
// end ; if RussianAI = 1 then
10813: LD_EXP 21
10817: PUSH
10818: LD_INT 1
10820: EQUAL
10821: IFFALSE 10847
// begin SetSide ( rugeneral1 , cpu1 ) ;
10823: LD_INT 4
10825: PPUSH
10826: LD_EXP 60
10830: PPUSH
10831: CALL_OW 235
// SetSide ( rugeneral2 , cpu1 ) ;
10835: LD_INT 5
10837: PPUSH
10838: LD_EXP 60
10842: PPUSH
10843: CALL_OW 235
// end ; if GetSide ( rugeneral1 ) = 0 then
10847: LD_INT 4
10849: PPUSH
10850: CALL_OW 255
10854: PUSH
10855: LD_INT 0
10857: EQUAL
10858: IFFALSE 10867
// begin RemoveUnit ( rugeneral1 ) ;
10860: LD_INT 4
10862: PPUSH
10863: CALL_OW 64
// end ; if GetSide ( rugeneral2 ) = 0 then
10867: LD_INT 5
10869: PPUSH
10870: CALL_OW 255
10874: PUSH
10875: LD_INT 0
10877: EQUAL
10878: IFFALSE 10887
// begin RemoveUnit ( rugeneral2 ) ;
10880: LD_INT 5
10882: PPUSH
10883: CALL_OW 64
// end ; if GetSide ( amgeneral1 ) = 0 then
10887: LD_INT 1
10889: PPUSH
10890: CALL_OW 255
10894: PUSH
10895: LD_INT 0
10897: EQUAL
10898: IFFALSE 10907
// begin RemoveUnit ( amgeneral1 ) ;
10900: LD_INT 1
10902: PPUSH
10903: CALL_OW 64
// end ; if GetSide ( amgeneral2 ) = 0 then
10907: LD_INT 2
10909: PPUSH
10910: CALL_OW 255
10914: PUSH
10915: LD_INT 0
10917: EQUAL
10918: IFFALSE 10927
// begin RemoveUnit ( amgeneral2 ) ;
10920: LD_INT 2
10922: PPUSH
10923: CALL_OW 64
// end ; end ; end_of_file
10927: END
// every 1 do
10928: GO 10930
10930: DISABLE
// begin SelectSide ;
10931: CALL 10940 0 0
// Resetfog ;
10935: CALL_OW 335
// end ;
10939: END
// export player1 , player2 , player3 , cpu1 , cpu2 , enabled_colours ; export function SelectSide ; var i , un ; begin
10940: LD_INT 0
10942: PPUSH
10943: PPUSH
10944: PPUSH
// enabled_colours = [ ] ;
10945: LD_ADDR_EXP 62
10949: PUSH
10950: EMPTY
10951: ST_TO_ADDR
// if BetaAI = 1 or RussianAI = 1 then
10952: LD_EXP 20
10956: PUSH
10957: LD_INT 1
10959: EQUAL
10960: PUSH
10961: LD_EXP 21
10965: PUSH
10966: LD_INT 1
10968: EQUAL
10969: OR
10970: IFFALSE 11134
// begin for i = 1 to 8 do
10972: LD_ADDR_VAR 0 2
10976: PUSH
10977: DOUBLE
10978: LD_INT 1
10980: DEC
10981: ST_TO_ADDR
10982: LD_INT 8
10984: PUSH
10985: FOR_TO
10986: IFFALSE 11074
// begin if Side_Positions [ i ] = 0 then
10988: LD_EXP 28
10992: PUSH
10993: LD_VAR 0 2
10997: ARRAY
10998: PUSH
10999: LD_INT 0
11001: EQUAL
11002: IFFALSE 11020
// enabled_colours = enabled_colours ^ i ;
11004: LD_ADDR_EXP 62
11008: PUSH
11009: LD_EXP 62
11013: PUSH
11014: LD_VAR 0 2
11018: ADD
11019: ST_TO_ADDR
// if Side_Positions [ i ] = 3 then
11020: LD_EXP 28
11024: PUSH
11025: LD_VAR 0 2
11029: ARRAY
11030: PUSH
11031: LD_INT 3
11033: EQUAL
11034: IFFALSE 11046
// player1 = i ;
11036: LD_ADDR_EXP 57
11040: PUSH
11041: LD_VAR 0 2
11045: ST_TO_ADDR
// if Side_Positions [ i ] = 4 then
11046: LD_EXP 28
11050: PUSH
11051: LD_VAR 0 2
11055: ARRAY
11056: PUSH
11057: LD_INT 4
11059: EQUAL
11060: IFFALSE 11072
// player2 = i ;
11062: LD_ADDR_EXP 58
11066: PUSH
11067: LD_VAR 0 2
11071: ST_TO_ADDR
// end ;
11072: GO 10985
11074: POP
11075: POP
// if not Side_Positions [ 6 ] > 0 then
11076: LD_EXP 28
11080: PUSH
11081: LD_INT 6
11083: ARRAY
11084: PUSH
11085: LD_INT 0
11087: GREATER
11088: NOT
11089: IFFALSE 11101
// cpu1 := 6 else
11091: LD_ADDR_EXP 60
11095: PUSH
11096: LD_INT 6
11098: ST_TO_ADDR
11099: GO 11134
// if not Side_Positions [ 7 ] > 0 then
11101: LD_EXP 28
11105: PUSH
11106: LD_INT 7
11108: ARRAY
11109: PUSH
11110: LD_INT 0
11112: GREATER
11113: NOT
11114: IFFALSE 11126
// cpu1 := 7 else
11116: LD_ADDR_EXP 60
11120: PUSH
11121: LD_INT 7
11123: ST_TO_ADDR
11124: GO 11134
// cpu1 := 8 ;
11126: LD_ADDR_EXP 60
11130: PUSH
11131: LD_INT 8
11133: ST_TO_ADDR
// end ; end ;
11134: LD_VAR 0 1
11138: RET
// export function ResAllTechs ( side , lab ) ; var i , tech , cout ; begin
11139: LD_INT 0
11141: PPUSH
11142: PPUSH
11143: PPUSH
11144: PPUSH
// for i = 1 to 72 do
11145: LD_ADDR_VAR 0 4
11149: PUSH
11150: DOUBLE
11151: LD_INT 1
11153: DEC
11154: ST_TO_ADDR
11155: LD_INT 72
11157: PUSH
11158: FOR_TO
11159: IFFALSE 11197
// begin if GetTech ( i , side ) = state_enabled then
11161: LD_VAR 0 4
11165: PPUSH
11166: LD_VAR 0 1
11170: PPUSH
11171: CALL_OW 321
11175: PUSH
11176: LD_INT 1
11178: EQUAL
11179: IFFALSE 11195
// AddComResearch ( lab , i ) ;
11181: LD_VAR 0 2
11185: PPUSH
11186: LD_VAR 0 4
11190: PPUSH
11191: CALL_OW 184
// end ;
11195: GO 11158
11197: POP
11198: POP
// cout = cout + 1 ;
11199: LD_ADDR_VAR 0 6
11203: PUSH
11204: LD_VAR 0 6
11208: PUSH
11209: LD_INT 1
11211: PLUS
11212: ST_TO_ADDR
// Wait ( 0 0$01 ) ;
11213: LD_INT 35
11215: PPUSH
11216: CALL_OW 67
// end ;
11220: LD_VAR 0 3
11224: RET
// every 0 0$1 trigger BetaAI = 1 do
11225: LD_EXP 20
11229: PUSH
11230: LD_INT 1
11232: EQUAL
11233: IFFALSE 11266
11235: GO 11237
11237: DISABLE
// begin ResAllTechs ( cpu1 , amlab1 ) ;
11238: LD_EXP 60
11242: PPUSH
11243: LD_EXP 41
11247: PPUSH
11248: CALL 11139 0 2
// ResAllTechs ( cpu1 , amlab2 ) ;
11252: LD_EXP 60
11256: PPUSH
11257: LD_EXP 45
11261: PPUSH
11262: CALL 11139 0 2
// end ;
11266: END
// every 0 0$1 trigger RussianAI = 1 do
11267: LD_EXP 21
11271: PUSH
11272: LD_INT 1
11274: EQUAL
11275: IFFALSE 11308
11277: GO 11279
11279: DISABLE
// begin ResAllTechs ( cpu1 , rulab1 ) ;
11280: LD_EXP 60
11284: PPUSH
11285: LD_EXP 50
11289: PPUSH
11290: CALL 11139 0 2
// ResAllTechs ( cpu1 , rulab2 ) ;
11294: LD_EXP 60
11298: PPUSH
11299: LD_EXP 54
11303: PPUSH
11304: CALL 11139 0 2
// end ;
11308: END
// export function IntBazooka ( list1 , list2 ) ; var ta , c , i , list , filter ; begin
11309: LD_INT 0
11311: PPUSH
11312: PPUSH
11313: PPUSH
11314: PPUSH
11315: PPUSH
11316: PPUSH
// list := FilterAllUnits ( [ [ f_side , list1 ] , [ f_class , class_bazooker ] ] ) ;
11317: LD_ADDR_VAR 0 7
11321: PUSH
11322: LD_INT 22
11324: PUSH
11325: LD_VAR 0 1
11329: PUSH
11330: EMPTY
11331: LIST
11332: LIST
11333: PUSH
11334: LD_INT 25
11336: PUSH
11337: LD_INT 9
11339: PUSH
11340: EMPTY
11341: LIST
11342: LIST
11343: PUSH
11344: EMPTY
11345: LIST
11346: LIST
11347: PPUSH
11348: CALL_OW 69
11352: ST_TO_ADDR
// filter := FilterAllUnits ( [ [ f_side , list2 ] , [ f_not , [ f_type , unit_building ] ] ] ) ;
11353: LD_ADDR_VAR 0 8
11357: PUSH
11358: LD_INT 22
11360: PUSH
11361: LD_VAR 0 2
11365: PUSH
11366: EMPTY
11367: LIST
11368: LIST
11369: PUSH
11370: LD_INT 3
11372: PUSH
11373: LD_INT 21
11375: PUSH
11376: LD_INT 3
11378: PUSH
11379: EMPTY
11380: LIST
11381: LIST
11382: PUSH
11383: EMPTY
11384: LIST
11385: LIST
11386: PUSH
11387: EMPTY
11388: LIST
11389: LIST
11390: PPUSH
11391: CALL_OW 69
11395: ST_TO_ADDR
// c := Rand ( 1 , 4 ) ;
11396: LD_ADDR_VAR 0 5
11400: PUSH
11401: LD_INT 1
11403: PPUSH
11404: LD_INT 4
11406: PPUSH
11407: CALL_OW 12
11411: ST_TO_ADDR
// for i = 1 to list do
11412: LD_ADDR_VAR 0 6
11416: PUSH
11417: DOUBLE
11418: LD_INT 1
11420: DEC
11421: ST_TO_ADDR
11422: LD_VAR 0 7
11426: PUSH
11427: FOR_TO
11428: IFFALSE 11610
// for ta in filter do
11430: LD_ADDR_VAR 0 4
11434: PUSH
11435: LD_VAR 0 8
11439: PUSH
11440: FOR_IN
11441: IFFALSE 11606
// begin if GetDistUnits ( list [ i ] , ta ) <= 13 then
11443: LD_VAR 0 7
11447: PUSH
11448: LD_VAR 0 6
11452: ARRAY
11453: PPUSH
11454: LD_VAR 0 4
11458: PPUSH
11459: CALL_OW 296
11463: PUSH
11464: LD_INT 13
11466: LESSEQUAL
11467: IFFALSE 11604
// begin case c of 1 :
11469: LD_VAR 0 5
11473: PUSH
11474: LD_INT 1
11476: DOUBLE
11477: EQUAL
11478: IFTRUE 11482
11480: GO 11520
11482: POP
// ComTimeShift ( list [ i ] , GetX ( ta ) , GetY ( ta ) ) ; 2 :
11483: LD_VAR 0 7
11487: PUSH
11488: LD_VAR 0 6
11492: ARRAY
11493: PPUSH
11494: LD_VAR 0 4
11498: PPUSH
11499: CALL_OW 250
11503: PPUSH
11504: LD_VAR 0 4
11508: PPUSH
11509: CALL_OW 251
11513: PPUSH
11514: CALL_OW 154
11518: GO 11604
11520: LD_INT 2
11522: DOUBLE
11523: EQUAL
11524: IFTRUE 11528
11526: GO 11592
11528: POP
// ComSpaceShift ( list [ i ] , GetX ( ta ) + Rand ( - 1 , 1 ) , GetY ( ta ) + Rand ( - 1 , 1 ) ) ; 3 :
11529: LD_VAR 0 7
11533: PUSH
11534: LD_VAR 0 6
11538: ARRAY
11539: PPUSH
11540: LD_VAR 0 4
11544: PPUSH
11545: CALL_OW 250
11549: PUSH
11550: LD_INT 1
11552: NEG
11553: PPUSH
11554: LD_INT 1
11556: PPUSH
11557: CALL_OW 12
11561: PLUS
11562: PPUSH
11563: LD_VAR 0 4
11567: PPUSH
11568: CALL_OW 251
11572: PUSH
11573: LD_INT 1
11575: NEG
11576: PPUSH
11577: LD_INT 1
11579: PPUSH
11580: CALL_OW 12
11584: PLUS
11585: PPUSH
11586: CALL_OW 153
11590: GO 11604
11592: LD_INT 3
11594: DOUBLE
11595: EQUAL
11596: IFTRUE 11600
11598: GO 11603
11600: POP
// ; end ;
11601: GO 11604
11603: POP
// end ; end ;
11604: GO 11440
11606: POP
11607: POP
11608: GO 11427
11610: POP
11611: POP
// end ; end_of_file
11612: LD_VAR 0 3
11616: RET
// every 0 0$3 trigger BetaAI = 1 do
11617: LD_EXP 20
11621: PUSH
11622: LD_INT 1
11624: EQUAL
11625: IFFALSE 11642
11627: GO 11629
11629: DISABLE
// begin wait ( 0 0$1 ) ;
11630: LD_INT 35
11632: PPUSH
11633: CALL_OW 67
// enable ;
11637: ENABLE
// RepairBuildingAmerican ;
11638: CALL 11643 0 0
// end ;
11642: END
// export DestroyRepairUS ; export function RepairBuildingAmerican ; var enginer_list , scientist_list , buildings , i , un ; begin
11643: LD_INT 0
11645: PPUSH
11646: PPUSH
11647: PPUSH
11648: PPUSH
11649: PPUSH
11650: PPUSH
// enginer_list := FilterAllUnits ( [ [ f_side , cpu1 ] , [ f_class , 2 ] ] ) ;
11651: LD_ADDR_VAR 0 2
11655: PUSH
11656: LD_INT 22
11658: PUSH
11659: LD_EXP 60
11663: PUSH
11664: EMPTY
11665: LIST
11666: LIST
11667: PUSH
11668: LD_INT 25
11670: PUSH
11671: LD_INT 2
11673: PUSH
11674: EMPTY
11675: LIST
11676: LIST
11677: PUSH
11678: EMPTY
11679: LIST
11680: LIST
11681: PPUSH
11682: CALL_OW 69
11686: ST_TO_ADDR
// scientist_list := FilterAllUnits ( [ [ f_side , cpu1 ] , [ f_class , 4 ] ] ) ;
11687: LD_ADDR_VAR 0 3
11691: PUSH
11692: LD_INT 22
11694: PUSH
11695: LD_EXP 60
11699: PUSH
11700: EMPTY
11701: LIST
11702: LIST
11703: PUSH
11704: LD_INT 25
11706: PUSH
11707: LD_INT 4
11709: PUSH
11710: EMPTY
11711: LIST
11712: LIST
11713: PUSH
11714: EMPTY
11715: LIST
11716: LIST
11717: PPUSH
11718: CALL_OW 69
11722: ST_TO_ADDR
// buildings := FilterAllUnits ( [ [ [ f_side , cpu1 ] , [ f_type , unit_building ] , [ f_not , [ f_lives , 1000 ] ] ] ] ) ;
11723: LD_ADDR_VAR 0 4
11727: PUSH
11728: LD_INT 22
11730: PUSH
11731: LD_EXP 60
11735: PUSH
11736: EMPTY
11737: LIST
11738: LIST
11739: PUSH
11740: LD_INT 21
11742: PUSH
11743: LD_INT 3
11745: PUSH
11746: EMPTY
11747: LIST
11748: LIST
11749: PUSH
11750: LD_INT 3
11752: PUSH
11753: LD_INT 24
11755: PUSH
11756: LD_INT 1000
11758: PUSH
11759: EMPTY
11760: LIST
11761: LIST
11762: PUSH
11763: EMPTY
11764: LIST
11765: LIST
11766: PUSH
11767: EMPTY
11768: LIST
11769: LIST
11770: LIST
11771: PUSH
11772: EMPTY
11773: LIST
11774: PPUSH
11775: CALL_OW 69
11779: ST_TO_ADDR
// DestroyRepairUS = 0 ;
11780: LD_ADDR_EXP 63
11784: PUSH
11785: LD_INT 0
11787: ST_TO_ADDR
// if buildings > 0 then
11788: LD_VAR 0 4
11792: PUSH
11793: LD_INT 0
11795: GREATER
11796: IFFALSE 11931
// begin for i = 1 to enginer_list do
11798: LD_ADDR_VAR 0 5
11802: PUSH
11803: DOUBLE
11804: LD_INT 1
11806: DEC
11807: ST_TO_ADDR
11808: LD_VAR 0 2
11812: PUSH
11813: FOR_TO
11814: IFFALSE 11929
// begin ComExitBuilding ( enginer_list [ i ] ) ;
11816: LD_VAR 0 2
11820: PUSH
11821: LD_VAR 0 5
11825: ARRAY
11826: PPUSH
11827: CALL_OW 122
// AddComRepairBuilding ( enginer_list [ i ] , buildings [ 1 ] ) ;
11831: LD_VAR 0 2
11835: PUSH
11836: LD_VAR 0 5
11840: ARRAY
11841: PPUSH
11842: LD_VAR 0 4
11846: PUSH
11847: LD_INT 1
11849: ARRAY
11850: PPUSH
11851: CALL_OW 190
// if GetLives ( enginer_list [ i ] ) < 800 then
11855: LD_VAR 0 2
11859: PUSH
11860: LD_VAR 0 5
11864: ARRAY
11865: PPUSH
11866: CALL_OW 256
11870: PUSH
11871: LD_INT 800
11873: LESS
11874: IFFALSE 11909
// begin ComExitBuilding ( scientist_list [ 1 ] ) ;
11876: LD_VAR 0 3
11880: PUSH
11881: LD_INT 1
11883: ARRAY
11884: PPUSH
11885: CALL_OW 122
// ComMoveToArea ( enginer_List [ i ] , AmHealZone ) ;
11889: LD_VAR 0 2
11893: PUSH
11894: LD_VAR 0 5
11898: ARRAY
11899: PPUSH
11900: LD_INT 5
11902: PPUSH
11903: CALL_OW 113
// end else
11907: GO 11927
// ComEnterUnit ( scientist_list [ 1 ] , amlab1 ) ;
11909: LD_VAR 0 3
11913: PUSH
11914: LD_INT 1
11916: ARRAY
11917: PPUSH
11918: LD_EXP 41
11922: PPUSH
11923: CALL_OW 120
// end ;
11927: GO 11813
11929: POP
11930: POP
// end ; for i = 1 to enginer_list do
11931: LD_ADDR_VAR 0 5
11935: PUSH
11936: DOUBLE
11937: LD_INT 1
11939: DEC
11940: ST_TO_ADDR
11941: LD_VAR 0 2
11945: PUSH
11946: FOR_TO
11947: IFFALSE 12108
// begin wait ( 0 0$3 ) ;
11949: LD_INT 105
11951: PPUSH
11952: CALL_OW 67
// if buildings = 0 and DestroyRepairUS = 0 then
11956: LD_VAR 0 4
11960: PUSH
11961: LD_INT 0
11963: EQUAL
11964: PUSH
11965: LD_EXP 63
11969: PUSH
11970: LD_INT 0
11972: EQUAL
11973: AND
11974: IFFALSE 11998
// begin ComEnterUnit ( enginer_list [ i ] , amdepo1 ) ;
11976: LD_VAR 0 2
11980: PUSH
11981: LD_VAR 0 5
11985: ARRAY
11986: PPUSH
11987: LD_EXP 40
11991: PPUSH
11992: CALL_OW 120
// end else
11996: GO 12013
// begin ComExitBuilding ( enginer_list [ i ] ) ;
11998: LD_VAR 0 2
12002: PUSH
12003: LD_VAR 0 5
12007: ARRAY
12008: PPUSH
12009: CALL_OW 122
// end ; if GetLives ( enginer_list [ i ] ) < 1000 then
12013: LD_VAR 0 2
12017: PUSH
12018: LD_VAR 0 5
12022: ARRAY
12023: PPUSH
12024: CALL_OW 256
12028: PUSH
12029: LD_INT 1000
12031: LESS
12032: IFFALSE 12067
// begin ComMoveToArea ( enginer_List [ i ] , AmHealZone ) ;
12034: LD_VAR 0 2
12038: PUSH
12039: LD_VAR 0 5
12043: ARRAY
12044: PPUSH
12045: LD_INT 5
12047: PPUSH
12048: CALL_OW 113
// ComExitBuilding ( scientist_list [ 1 ] ) ;
12052: LD_VAR 0 3
12056: PUSH
12057: LD_INT 1
12059: ARRAY
12060: PPUSH
12061: CALL_OW 122
// end else
12065: GO 12106
// if GetLives ( enginer_list [ i ] ) = 1000 then
12067: LD_VAR 0 2
12071: PUSH
12072: LD_VAR 0 5
12076: ARRAY
12077: PPUSH
12078: CALL_OW 256
12082: PUSH
12083: LD_INT 1000
12085: EQUAL
12086: IFFALSE 12106
// begin ComEnterUnit ( scientist_list [ 1 ] , amlab1 ) ;
12088: LD_VAR 0 3
12092: PUSH
12093: LD_INT 1
12095: ARRAY
12096: PPUSH
12097: LD_EXP 41
12101: PPUSH
12102: CALL_OW 120
// end ; end ;
12106: GO 11946
12108: POP
12109: POP
// end ;
12110: LD_VAR 0 1
12114: RET
// every 0 0$1 trigger BetaAI = 1 do var i , l ;
12115: LD_EXP 20
12119: PUSH
12120: LD_INT 1
12122: EQUAL
12123: IFFALSE 12200
12125: GO 12127
12127: DISABLE
12128: LD_INT 0
12130: PPUSH
12131: PPUSH
// begin enable ;
12132: ENABLE
// for i in FilterUnitsInArea ( BetaBase , [ [ f_class , 1 ] , [ f_side , cpu1 ] ] ) do
12133: LD_ADDR_VAR 0 1
12137: PUSH
12138: LD_INT 6
12140: PPUSH
12141: LD_INT 25
12143: PUSH
12144: LD_INT 1
12146: PUSH
12147: EMPTY
12148: LIST
12149: LIST
12150: PUSH
12151: LD_INT 22
12153: PUSH
12154: LD_EXP 60
12158: PUSH
12159: EMPTY
12160: LIST
12161: LIST
12162: PUSH
12163: EMPTY
12164: LIST
12165: LIST
12166: PPUSH
12167: CALL_OW 70
12171: PUSH
12172: FOR_IN
12173: IFFALSE 12198
// begin wait ( 0 0$2 ) ;
12175: LD_INT 70
12177: PPUSH
12178: CALL_OW 67
// ComEnterUnit ( i , amarmoury ) ;
12182: LD_VAR 0 1
12186: PPUSH
12187: LD_EXP 43
12191: PPUSH
12192: CALL_OW 120
// end ;
12196: GO 12172
12198: POP
12199: POP
// end ;
12200: PPOPN 2
12202: END
// every 0 0$5 trigger FilterAllUnits ( [ [ f_side , cpu1 ] , [ f_type , unit_vehicle ] ] ) = 0 do
12203: LD_INT 22
12205: PUSH
12206: LD_EXP 60
12210: PUSH
12211: EMPTY
12212: LIST
12213: LIST
12214: PUSH
12215: LD_INT 21
12217: PUSH
12218: LD_INT 2
12220: PUSH
12221: EMPTY
12222: LIST
12223: LIST
12224: PUSH
12225: EMPTY
12226: LIST
12227: LIST
12228: PPUSH
12229: CALL_OW 69
12233: PUSH
12234: LD_INT 0
12236: EQUAL
12237: IFFALSE 12411
12239: GO 12241
12241: DISABLE
// begin enable ;
12242: ENABLE
// AddComConstruct ( amfab1 , 4 , 3 , 3 , 6 ) ;
12243: LD_EXP 42
12247: PPUSH
12248: LD_INT 4
12250: PPUSH
12251: LD_INT 3
12253: PPUSH
12254: LD_INT 3
12256: PPUSH
12257: LD_INT 6
12259: PPUSH
12260: CALL_OW 185
// AddComConstruct ( amfab1 , 4 , 3 , 3 , 6 ) ;
12264: LD_EXP 42
12268: PPUSH
12269: LD_INT 4
12271: PPUSH
12272: LD_INT 3
12274: PPUSH
12275: LD_INT 3
12277: PPUSH
12278: LD_INT 6
12280: PPUSH
12281: CALL_OW 185
// AddComConstruct ( amfab1 , 3 , 3 , 3 , 9 ) ;
12285: LD_EXP 42
12289: PPUSH
12290: LD_INT 3
12292: PPUSH
12293: LD_INT 3
12295: PPUSH
12296: LD_INT 3
12298: PPUSH
12299: LD_INT 9
12301: PPUSH
12302: CALL_OW 185
// AddComConstruct ( amfab1 , 3 , 3 , 3 , 9 ) ;
12306: LD_EXP 42
12310: PPUSH
12311: LD_INT 3
12313: PPUSH
12314: LD_INT 3
12316: PPUSH
12317: LD_INT 3
12319: PPUSH
12320: LD_INT 9
12322: PPUSH
12323: CALL_OW 185
// AddComConstruct ( amfab1 , 3 , 3 , 3 , 9 ) ;
12327: LD_EXP 42
12331: PPUSH
12332: LD_INT 3
12334: PPUSH
12335: LD_INT 3
12337: PPUSH
12338: LD_INT 3
12340: PPUSH
12341: LD_INT 9
12343: PPUSH
12344: CALL_OW 185
// AddComConstruct ( amfab2 , 3 , 3 , 2 , 7 ) ;
12348: LD_EXP 46
12352: PPUSH
12353: LD_INT 3
12355: PPUSH
12356: LD_INT 3
12358: PPUSH
12359: LD_INT 2
12361: PPUSH
12362: LD_INT 7
12364: PPUSH
12365: CALL_OW 185
// AddComConstruct ( amfab2 , 3 , 3 , 2 , 7 ) ;
12369: LD_EXP 46
12373: PPUSH
12374: LD_INT 3
12376: PPUSH
12377: LD_INT 3
12379: PPUSH
12380: LD_INT 2
12382: PPUSH
12383: LD_INT 7
12385: PPUSH
12386: CALL_OW 185
// AddComConstruct ( amfab2 , 3 , 3 , 2 , 7 ) ;
12390: LD_EXP 46
12394: PPUSH
12395: LD_INT 3
12397: PPUSH
12398: LD_INT 3
12400: PPUSH
12401: LD_INT 2
12403: PPUSH
12404: LD_INT 7
12406: PPUSH
12407: CALL_OW 185
// end ;
12411: END
// every 1 1$0 trigger BetaAI = 1 and FilterAllUnits ( [ [ f_side , cpu1 ] , [ f_type , unit_vehicle ] ] ) >= 8 do var tactic , i ;
12412: LD_EXP 20
12416: PUSH
12417: LD_INT 1
12419: EQUAL
12420: PUSH
12421: LD_INT 22
12423: PUSH
12424: LD_EXP 60
12428: PUSH
12429: EMPTY
12430: LIST
12431: LIST
12432: PUSH
12433: LD_INT 21
12435: PUSH
12436: LD_INT 2
12438: PUSH
12439: EMPTY
12440: LIST
12441: LIST
12442: PUSH
12443: EMPTY
12444: LIST
12445: LIST
12446: PPUSH
12447: CALL_OW 69
12451: PUSH
12452: LD_INT 8
12454: GREATEREQUAL
12455: AND
12456: IFFALSE 12556
12458: GO 12460
12460: DISABLE
12461: LD_INT 0
12463: PPUSH
12464: PPUSH
// begin enable ;
12465: ENABLE
// for i in FilterAllUnits ( [ [ f_side , cpu1 ] , [ f_type , unit_vehicle ] , [ f_lives , 1000 ] ] ) do
12466: LD_ADDR_VAR 0 2
12470: PUSH
12471: LD_INT 22
12473: PUSH
12474: LD_EXP 60
12478: PUSH
12479: EMPTY
12480: LIST
12481: LIST
12482: PUSH
12483: LD_INT 21
12485: PUSH
12486: LD_INT 2
12488: PUSH
12489: EMPTY
12490: LIST
12491: LIST
12492: PUSH
12493: LD_INT 24
12495: PUSH
12496: LD_INT 1000
12498: PUSH
12499: EMPTY
12500: LIST
12501: LIST
12502: PUSH
12503: EMPTY
12504: LIST
12505: LIST
12506: LIST
12507: PPUSH
12508: CALL_OW 69
12512: PUSH
12513: FOR_IN
12514: IFFALSE 12554
// begin AddComAgressiveMove ( [ i ] , 85 , 101 ) ;
12516: LD_VAR 0 2
12520: PUSH
12521: EMPTY
12522: LIST
12523: PPUSH
12524: LD_INT 85
12526: PPUSH
12527: LD_INT 101
12529: PPUSH
12530: CALL_OW 174
// AddComAgressiveMove ( [ i ] , 126 , 99 ) ;
12534: LD_VAR 0 2
12538: PUSH
12539: EMPTY
12540: LIST
12541: PPUSH
12542: LD_INT 126
12544: PPUSH
12545: LD_INT 99
12547: PPUSH
12548: CALL_OW 174
// end ;
12552: GO 12513
12554: POP
12555: POP
// end ; end_of_file
12556: PPOPN 2
12558: END
// export ExtraStrings ; export function ShowTimer ; var AllStrings ; begin
12559: LD_INT 0
12561: PPUSH
12562: PPUSH
// AllStrings := [ #Multi1x1-Time , tick ] ;
12563: LD_ADDR_VAR 0 2
12567: PUSH
12568: LD_STRING #Multi1x1-Time
12570: PUSH
12571: LD_OWVAR 1
12575: PUSH
12576: EMPTY
12577: LIST
12578: LIST
12579: ST_TO_ADDR
// if ( ExtraStrings ) then
12580: LD_EXP 64
12584: IFFALSE 12606
// AllStrings := AllStrings ^  ^ ExtraStrings ;
12586: LD_ADDR_VAR 0 2
12590: PUSH
12591: LD_VAR 0 2
12595: PUSH
12596: LD_STRING 
12598: ADD
12599: PUSH
12600: LD_EXP 64
12604: ADD
12605: ST_TO_ADDR
// Display_Strings := AllStrings ;
12606: LD_ADDR_OWVAR 47
12610: PUSH
12611: LD_VAR 0 2
12615: ST_TO_ADDR
// end ;
12616: LD_VAR 0 1
12620: RET
// every 0 0$1 do
12621: GO 12623
12623: DISABLE
// begin ShowTimer ;
12624: CALL 12559 0 0
// enable ;
12628: ENABLE
// end ; end_of_file
12629: END
// every 0 0$3 trigger RussianAI = 1 do
12630: LD_EXP 21
12634: PUSH
12635: LD_INT 1
12637: EQUAL
12638: IFFALSE 12655
12640: GO 12642
12642: DISABLE
// begin wait ( 0 0$1 ) ;
12643: LD_INT 35
12645: PPUSH
12646: CALL_OW 67
// enable ;
12650: ENABLE
// RepairBuildingRussian ;
12651: CALL 12656 0 0
// end ;
12655: END
// export DestroyRepairRU ; export function RepairBuildingRussian ; var enginer_list , scientist_list , buildings , i , un ; begin
12656: LD_INT 0
12658: PPUSH
12659: PPUSH
12660: PPUSH
12661: PPUSH
12662: PPUSH
12663: PPUSH
// enginer_list := FilterAllUnits ( [ [ f_side , cpu1 ] , [ f_class , 2 ] ] ) ;
12664: LD_ADDR_VAR 0 2
12668: PUSH
12669: LD_INT 22
12671: PUSH
12672: LD_EXP 60
12676: PUSH
12677: EMPTY
12678: LIST
12679: LIST
12680: PUSH
12681: LD_INT 25
12683: PUSH
12684: LD_INT 2
12686: PUSH
12687: EMPTY
12688: LIST
12689: LIST
12690: PUSH
12691: EMPTY
12692: LIST
12693: LIST
12694: PPUSH
12695: CALL_OW 69
12699: ST_TO_ADDR
// scientist_list := FilterAllUnits ( [ [ f_side , cpu1 ] , [ f_class , 4 ] ] ) ;
12700: LD_ADDR_VAR 0 3
12704: PUSH
12705: LD_INT 22
12707: PUSH
12708: LD_EXP 60
12712: PUSH
12713: EMPTY
12714: LIST
12715: LIST
12716: PUSH
12717: LD_INT 25
12719: PUSH
12720: LD_INT 4
12722: PUSH
12723: EMPTY
12724: LIST
12725: LIST
12726: PUSH
12727: EMPTY
12728: LIST
12729: LIST
12730: PPUSH
12731: CALL_OW 69
12735: ST_TO_ADDR
// buildings := FilterAllUnits ( [ [ [ f_side , cpu1 ] , [ f_type , unit_building ] , [ f_not , [ f_lives , 1000 ] ] ] ] ) ;
12736: LD_ADDR_VAR 0 4
12740: PUSH
12741: LD_INT 22
12743: PUSH
12744: LD_EXP 60
12748: PUSH
12749: EMPTY
12750: LIST
12751: LIST
12752: PUSH
12753: LD_INT 21
12755: PUSH
12756: LD_INT 3
12758: PUSH
12759: EMPTY
12760: LIST
12761: LIST
12762: PUSH
12763: LD_INT 3
12765: PUSH
12766: LD_INT 24
12768: PUSH
12769: LD_INT 1000
12771: PUSH
12772: EMPTY
12773: LIST
12774: LIST
12775: PUSH
12776: EMPTY
12777: LIST
12778: LIST
12779: PUSH
12780: EMPTY
12781: LIST
12782: LIST
12783: LIST
12784: PUSH
12785: EMPTY
12786: LIST
12787: PPUSH
12788: CALL_OW 69
12792: ST_TO_ADDR
// DestroyRepairRU = 0 ;
12793: LD_ADDR_EXP 65
12797: PUSH
12798: LD_INT 0
12800: ST_TO_ADDR
// if buildings > 0 then
12801: LD_VAR 0 4
12805: PUSH
12806: LD_INT 0
12808: GREATER
12809: IFFALSE 12944
// begin for i = 1 to enginer_list do
12811: LD_ADDR_VAR 0 5
12815: PUSH
12816: DOUBLE
12817: LD_INT 1
12819: DEC
12820: ST_TO_ADDR
12821: LD_VAR 0 2
12825: PUSH
12826: FOR_TO
12827: IFFALSE 12942
// begin ComExitBuilding ( enginer_list [ i ] ) ;
12829: LD_VAR 0 2
12833: PUSH
12834: LD_VAR 0 5
12838: ARRAY
12839: PPUSH
12840: CALL_OW 122
// AddComRepairBuilding ( enginer_list [ i ] , buildings [ 1 ] ) ;
12844: LD_VAR 0 2
12848: PUSH
12849: LD_VAR 0 5
12853: ARRAY
12854: PPUSH
12855: LD_VAR 0 4
12859: PUSH
12860: LD_INT 1
12862: ARRAY
12863: PPUSH
12864: CALL_OW 190
// if GetLives ( enginer_list [ i ] ) < 800 then
12868: LD_VAR 0 2
12872: PUSH
12873: LD_VAR 0 5
12877: ARRAY
12878: PPUSH
12879: CALL_OW 256
12883: PUSH
12884: LD_INT 800
12886: LESS
12887: IFFALSE 12922
// begin ComExitBuilding ( scientist_list [ 1 ] ) ;
12889: LD_VAR 0 3
12893: PUSH
12894: LD_INT 1
12896: ARRAY
12897: PPUSH
12898: CALL_OW 122
// ComMoveToArea ( enginer_List [ i ] , RuHealZone ) ;
12902: LD_VAR 0 2
12906: PUSH
12907: LD_VAR 0 5
12911: ARRAY
12912: PPUSH
12913: LD_INT 8
12915: PPUSH
12916: CALL_OW 113
// end else
12920: GO 12940
// ComEnterUnit ( scientist_list [ 1 ] , rulab1 ) ;
12922: LD_VAR 0 3
12926: PUSH
12927: LD_INT 1
12929: ARRAY
12930: PPUSH
12931: LD_EXP 50
12935: PPUSH
12936: CALL_OW 120
// end ;
12940: GO 12826
12942: POP
12943: POP
// end ; for i = 1 to enginer_list do
12944: LD_ADDR_VAR 0 5
12948: PUSH
12949: DOUBLE
12950: LD_INT 1
12952: DEC
12953: ST_TO_ADDR
12954: LD_VAR 0 2
12958: PUSH
12959: FOR_TO
12960: IFFALSE 13121
// begin wait ( 0 0$3 ) ;
12962: LD_INT 105
12964: PPUSH
12965: CALL_OW 67
// if buildings = 0 and DestroyRepairUS = 0 then
12969: LD_VAR 0 4
12973: PUSH
12974: LD_INT 0
12976: EQUAL
12977: PUSH
12978: LD_EXP 63
12982: PUSH
12983: LD_INT 0
12985: EQUAL
12986: AND
12987: IFFALSE 13011
// begin ComEnterUnit ( enginer_list [ i ] , rudepo1 ) ;
12989: LD_VAR 0 2
12993: PUSH
12994: LD_VAR 0 5
12998: ARRAY
12999: PPUSH
13000: LD_EXP 49
13004: PPUSH
13005: CALL_OW 120
// end else
13009: GO 13026
// begin ComExitBuilding ( enginer_list [ i ] ) ;
13011: LD_VAR 0 2
13015: PUSH
13016: LD_VAR 0 5
13020: ARRAY
13021: PPUSH
13022: CALL_OW 122
// end ; if GetLives ( enginer_list [ i ] ) < 1000 then
13026: LD_VAR 0 2
13030: PUSH
13031: LD_VAR 0 5
13035: ARRAY
13036: PPUSH
13037: CALL_OW 256
13041: PUSH
13042: LD_INT 1000
13044: LESS
13045: IFFALSE 13080
// begin ComMoveToArea ( enginer_List [ i ] , RuHealZone ) ;
13047: LD_VAR 0 2
13051: PUSH
13052: LD_VAR 0 5
13056: ARRAY
13057: PPUSH
13058: LD_INT 8
13060: PPUSH
13061: CALL_OW 113
// ComExitBuilding ( scientist_list [ 1 ] ) ;
13065: LD_VAR 0 3
13069: PUSH
13070: LD_INT 1
13072: ARRAY
13073: PPUSH
13074: CALL_OW 122
// end else
13078: GO 13119
// if GetLives ( enginer_list [ i ] ) = 1000 then
13080: LD_VAR 0 2
13084: PUSH
13085: LD_VAR 0 5
13089: ARRAY
13090: PPUSH
13091: CALL_OW 256
13095: PUSH
13096: LD_INT 1000
13098: EQUAL
13099: IFFALSE 13119
// begin ComEnterUnit ( scientist_list [ 1 ] , rulab1 ) ;
13101: LD_VAR 0 3
13105: PUSH
13106: LD_INT 1
13108: ARRAY
13109: PPUSH
13110: LD_EXP 50
13114: PPUSH
13115: CALL_OW 120
// end ; end ;
13119: GO 12959
13121: POP
13122: POP
// end ;
13123: LD_VAR 0 1
13127: RET
// every 0 0$1 trigger RussianAI = 1 do var i , l ;
13128: LD_EXP 21
13132: PUSH
13133: LD_INT 1
13135: EQUAL
13136: IFFALSE 13227
13138: GO 13140
13140: DISABLE
13141: LD_INT 0
13143: PPUSH
13144: PPUSH
// begin enable ;
13145: ENABLE
// for i in FilterUnitsInArea ( RussianBase , [ [ f_class , 1 ] , [ f_side , cpu1 ] ] ) do
13146: LD_ADDR_VAR 0 1
13150: PUSH
13151: LD_INT 9
13153: PPUSH
13154: LD_INT 25
13156: PUSH
13157: LD_INT 1
13159: PUSH
13160: EMPTY
13161: LIST
13162: LIST
13163: PUSH
13164: LD_INT 22
13166: PUSH
13167: LD_EXP 60
13171: PUSH
13172: EMPTY
13173: LIST
13174: LIST
13175: PUSH
13176: EMPTY
13177: LIST
13178: LIST
13179: PPUSH
13180: CALL_OW 70
13184: PUSH
13185: FOR_IN
13186: IFFALSE 13225
// begin wait ( 0 0$2 ) ;
13188: LD_INT 70
13190: PPUSH
13191: CALL_OW 67
// ComEnterUnit ( i , ruarmoury1 ) ;
13195: LD_VAR 0 1
13199: PPUSH
13200: LD_EXP 52
13204: PPUSH
13205: CALL_OW 120
// ComEnterUnit ( i , ruarmoury2 ) ;
13209: LD_VAR 0 1
13213: PPUSH
13214: LD_EXP 56
13218: PPUSH
13219: CALL_OW 120
// end ;
13223: GO 13185
13225: POP
13226: POP
// end ;
13227: PPOPN 2
13229: END
// every 0 0$5 + 13 13$0 trigger FilterAllUnits ( [ [ f_side , cpu1 ] , [ f_type , unit_vehicle ] ] ) = 0 do
13230: LD_INT 22
13232: PUSH
13233: LD_EXP 60
13237: PUSH
13238: EMPTY
13239: LIST
13240: LIST
13241: PUSH
13242: LD_INT 21
13244: PUSH
13245: LD_INT 2
13247: PUSH
13248: EMPTY
13249: LIST
13250: LIST
13251: PUSH
13252: EMPTY
13253: LIST
13254: LIST
13255: PPUSH
13256: CALL_OW 69
13260: PUSH
13261: LD_INT 0
13263: EQUAL
13264: IFFALSE 13438
13266: GO 13268
13268: DISABLE
// begin enable ;
13269: ENABLE
// AddComConstruct ( rufab1 , 22 , 3 , 3 , 43 ) ;
13270: LD_EXP 51
13274: PPUSH
13275: LD_INT 22
13277: PPUSH
13278: LD_INT 3
13280: PPUSH
13281: LD_INT 3
13283: PPUSH
13284: LD_INT 43
13286: PPUSH
13287: CALL_OW 185
// AddComConstruct ( rufab1 , 22 , 3 , 3 , 43 ) ;
13291: LD_EXP 51
13295: PPUSH
13296: LD_INT 22
13298: PPUSH
13299: LD_INT 3
13301: PPUSH
13302: LD_INT 3
13304: PPUSH
13305: LD_INT 43
13307: PPUSH
13308: CALL_OW 185
// AddComConstruct ( rufab1 , 22 , 3 , 3 , 44 ) ;
13312: LD_EXP 51
13316: PPUSH
13317: LD_INT 22
13319: PPUSH
13320: LD_INT 3
13322: PPUSH
13323: LD_INT 3
13325: PPUSH
13326: LD_INT 44
13328: PPUSH
13329: CALL_OW 185
// AddComConstruct ( rufab1 , 22 , 3 , 3 , 44 ) ;
13333: LD_EXP 51
13337: PPUSH
13338: LD_INT 22
13340: PPUSH
13341: LD_INT 3
13343: PPUSH
13344: LD_INT 3
13346: PPUSH
13347: LD_INT 44
13349: PPUSH
13350: CALL_OW 185
// AddComConstruct ( rufab1 , 22 , 3 , 3 , 45 ) ;
13354: LD_EXP 51
13358: PPUSH
13359: LD_INT 22
13361: PPUSH
13362: LD_INT 3
13364: PPUSH
13365: LD_INT 3
13367: PPUSH
13368: LD_INT 45
13370: PPUSH
13371: CALL_OW 185
// AddComConstruct ( rufab2 , 24 , 3 , 1 , 46 ) ;
13375: LD_EXP 55
13379: PPUSH
13380: LD_INT 24
13382: PPUSH
13383: LD_INT 3
13385: PPUSH
13386: LD_INT 1
13388: PPUSH
13389: LD_INT 46
13391: PPUSH
13392: CALL_OW 185
// AddComConstruct ( rufab2 , 24 , 3 , 1 , 46 ) ;
13396: LD_EXP 55
13400: PPUSH
13401: LD_INT 24
13403: PPUSH
13404: LD_INT 3
13406: PPUSH
13407: LD_INT 1
13409: PPUSH
13410: LD_INT 46
13412: PPUSH
13413: CALL_OW 185
// AddComConstruct ( rufab2 , 24 , 3 , 1 , 46 ) ;
13417: LD_EXP 55
13421: PPUSH
13422: LD_INT 24
13424: PPUSH
13425: LD_INT 3
13427: PPUSH
13428: LD_INT 1
13430: PPUSH
13431: LD_INT 46
13433: PPUSH
13434: CALL_OW 185
// end ;
13438: END
// every 1 1$0 trigger RussianAI = 1 and FilterAllUnits ( [ [ f_side , cpu1 ] , [ f_type , unit_vehicle ] ] ) >= 8 do var tactic , i ;
13439: LD_EXP 21
13443: PUSH
13444: LD_INT 1
13446: EQUAL
13447: PUSH
13448: LD_INT 22
13450: PUSH
13451: LD_EXP 60
13455: PUSH
13456: EMPTY
13457: LIST
13458: LIST
13459: PUSH
13460: LD_INT 21
13462: PUSH
13463: LD_INT 2
13465: PUSH
13466: EMPTY
13467: LIST
13468: LIST
13469: PUSH
13470: EMPTY
13471: LIST
13472: LIST
13473: PPUSH
13474: CALL_OW 69
13478: PUSH
13479: LD_INT 8
13481: GREATEREQUAL
13482: AND
13483: IFFALSE 13590
13485: GO 13487
13487: DISABLE
13488: LD_INT 0
13490: PPUSH
13491: PPUSH
// begin enable ;
13492: ENABLE
// for i in FilterAllUnits ( [ [ f_side , cpu1 ] , [ f_type , unit_vehicle ] ] ) do
13493: LD_ADDR_VAR 0 2
13497: PUSH
13498: LD_INT 22
13500: PUSH
13501: LD_EXP 60
13505: PUSH
13506: EMPTY
13507: LIST
13508: LIST
13509: PUSH
13510: LD_INT 21
13512: PUSH
13513: LD_INT 2
13515: PUSH
13516: EMPTY
13517: LIST
13518: LIST
13519: PUSH
13520: EMPTY
13521: LIST
13522: LIST
13523: PPUSH
13524: CALL_OW 69
13528: PUSH
13529: FOR_IN
13530: IFFALSE 13588
// begin AddComAgressiveMove ( [ i ] , 56 , 20 ) ;
13532: LD_VAR 0 2
13536: PUSH
13537: EMPTY
13538: LIST
13539: PPUSH
13540: LD_INT 56
13542: PPUSH
13543: LD_INT 20
13545: PPUSH
13546: CALL_OW 174
// AddComAgressiveMove ( [ i ] , 35 , 19 ) ;
13550: LD_VAR 0 2
13554: PUSH
13555: EMPTY
13556: LIST
13557: PPUSH
13558: LD_INT 35
13560: PPUSH
13561: LD_INT 19
13563: PPUSH
13564: CALL_OW 174
// AddComAgressiveMove ( [ i ] , 72 , 13 ) ;
13568: LD_VAR 0 2
13572: PUSH
13573: EMPTY
13574: LIST
13575: PPUSH
13576: LD_INT 72
13578: PPUSH
13579: LD_INT 13
13581: PPUSH
13582: CALL_OW 174
// end ;
13586: GO 13529
13588: POP
13589: POP
// end ;
13590: PPOPN 2
13592: END
// every 0 0$1 trigger RussianAI = 1 do
13593: LD_EXP 21
13597: PUSH
13598: LD_INT 1
13600: EQUAL
13601: IFFALSE 13631
13603: GO 13605
13605: DISABLE
// begin wait ( 0 0$2 ) ;
13606: LD_INT 70
13608: PPUSH
13609: CALL_OW 67
// IntBazooka ( cpu1 , GetSide ( amgeneral1 ) ) ;
13613: LD_EXP 60
13617: PPUSH
13618: LD_INT 1
13620: PPUSH
13621: CALL_OW 255
13625: PPUSH
13626: CALL 11309 0 2
// enable ;
13630: ENABLE
// end ;
13631: END
// every 0 0$1 trigger RussianAI = 1 do
13632: LD_EXP 21
13636: PUSH
13637: LD_INT 1
13639: EQUAL
13640: IFFALSE 13670
13642: GO 13644
13644: DISABLE
// begin wait ( 0 0$2 ) ;
13645: LD_INT 70
13647: PPUSH
13648: CALL_OW 67
// IntBazooka ( cpu1 , GetSide ( amgeneral2 ) ) ;
13652: LD_EXP 60
13656: PPUSH
13657: LD_INT 2
13659: PPUSH
13660: CALL_OW 255
13664: PPUSH
13665: CALL 11309 0 2
// enable ;
13669: ENABLE
// end ;
13670: END
